Joxa – A Modern Lisp for the Erlang VM
joxa.org
joxa.org
Second comment: LFE is a Lisp, but it's a Lisp whose first and foremost goal was to allow one to build fully Erlang (and OTP)-compatible systems in Lisp. Clojure's Lisp has a Java flavour; LFE's Lisp has an Erlang flavour. They are both very real and compelling Lisps :-)
Those are the core differences. Joxa also has some very clear and distinct goals of its own. Those goals are not really relevant to this discussion though.
If I could rename it then a better name would be EFL (Erlang Flavoured Lisp), which is what it is. The "Flavoured" in the name comes from that I had earlier implemented a Lisp machines flavors system on another lisp, with an english spelling thrown in as a joke.
The Elixir approach looks great, but it's unfortunately not a Lisp.
What does "semantically clean" mean?
Also in Python, True and False are a blessed instances of 1 and 0 with their logical operators overidden. So True + True == 2, but True is 1 => False.
You can also search #watjs for more example of 'unclean' semantics.
[0]: https://docs.python.org/3.4/reference/compound_stmts.html#ex... [1]: https://bugs.python.org/issue24321#msg244357
You can easily have booleans as a completely different type, and yet avoid stuff like: `1 if boolean else 0`...
In Haskell, for example, `True + True` and `True == 1` are compile errors (unless you defined wacky Num instances), and the boolean/int "identity" is simply handled by `fromEnum` (which works on any Enum, not only Bool)
1 == fromEnum True
0 == fromEnum False