Lisp Flavored Erlang
lfe.io
lfe.io
The big advantage of LFE would be macros, which otherwise have to be done with parse transforms in vanilla Erlang. (I understand Elixir also has macros, but sad to say I haven't gotten to dig into it yet.)
Now that I know LFE has the namespace-style syntactic convenience, I'm going to have to try it again.
If you want to learn the basics of a language, I highly recommend writing a lisp in it using only the Roots of Lisp paper and the target language's reference guide. It's a fun challenge.
[1] (yes, it's a pun) https://github.com/breckinloggins/erlisp
Did you ever check out LFE afterwards. to compare your approach with Robert's?
It's also a portmanteau!
Joxa deviates a bit further from some of Erlang's semantics, but in a way that allows it to express FP concepts in a much more streamlined way. Really intriguing design.
We've chatted about this before, and I guess I just got used to (funcall ...) in CL. There's no question, though, that being able to call functions without that is very clean.
You know, if you squint just right, the name/arity uniqueness in Erlang is a pretty nice match for a Lisp-2 ;-)
The erlang syntactic is really quite good. IT's new, yes, it's not lisp, it's not C, you have to learn a new syntax. Get over yourself, it's not that hard.
And once you learn it, it's nice and consistent and comprehinsible.
But elixir is even better. Elixir brings a lot of great features to erlang, while retaining interoperability, and one of the things about elixir is its syntax is much nicer (in my opinion) and it's certainly more accessible to most people.
Learn elixir.
I've been thinking about getting this printed on stickers and handing them out at tech meetups.
We're using the Phoenix framework http://www.phoenixframework.org/ as a backend for a web app written in Angular, and also as part of a data publication service. Phoenix makes a couple of great design choices influenced by its erlang heritage. Most notably it is really just one of the erlang "applications" you run, so it doesn't dominate or dictate the rest of your project structure. You can easily integrate it as just the web component of an application that has behind the scenes data processing or whatever else it is you'd want to do.
The only gotcha we've run into so far is that a lot of erlang libraries expect strings for configuration text (list of chars) whereas the convention in Elixir is to use binaries.This hasn't resulted in any real issues though, just a perplexed minute from time to time.
If you have any particular questions I'd be happy to try to answer them.
[0] http://www.erlang.org/download/armstrong_thesis_2003.pdf
); } }); ); } });
Sad to see my comment down voted. It was mostly a joke.
))))))))))))))))))))))))))))))))
I used Common Lisp during University, and mostly found it to be in my way. Although I might not have been a good enough programmer by then, to be fair. ML, on the other hand, I loved. I've been meaning to try out Haskell as I hear it is the spiritual successor of ML.
Clojure has many of the conveniences of a modern language, such as data type literals, to mention something incredibly basic but essential. I. e., everything is a "sequence" underneath, sure, but you can still write [1 2 3 4 5] and get yourself a vector/array type of deal. Thus it manages to dispel some of the dusty feeling I got from Common Lisp.
A literal vector in Common Lisp:
#(1 2 3 4 5)
A literal 3d 2x2x2 array in Common Lisp: #3A(((0 1) (2 3)) ((4 5) (6 7)))
Using it: CL-USER 4 > (map 'vector #'sqrt #(1 2 3))
#(1.0 1.4142135 1.7320508)