EDIT: What I'm continuously evaluating for myself is Clojure specifically
EDIT: What I'm continuously evaluating for myself is Clojure specifically
Clojure also has far more reach than any other lisp with implementations for JS, JVM, .Net and recently Dart/Flutter. It also has a library - libpython - for easily importing Python libraries.
The ecosystem? The lack of first class continuations? All the things that can be portably implemented in any language?
- make immutability the normal case, yet it is sufficiently performing that one rarely has to go back to mutability
- minimal syntax, uniformity, dynamic typing, macro-system, symbols from Lisp
- it extends Lisp with namespaces, even symbols get namespace
- access to the whole ecosystem of the JVM, of Javascript and mostly to Python's ecosystem
The price for accessing those ecosystems was omitting first class continuations. Which one is more valuable depends on your use case, but for many use cases I am considering that was the right choice.
CL has packages and most implementations have PLN so you get most (all?) of what the clojure namespaces offer.
I think that if anyone was rethinking scheme the would steal the immutability things from clojure (something like HAMTs and RRB trees or the scala finger tree vectors are more exciting I would say).
I don't think clojure brought anything new, per se. It took some nice parts from common lisp and scheme and added an immutability first paradigm. Nothing new, but getting people to understand how nice immutability is probably involves making the happy path immutable from day 1.
and yet, not a single parentheses in your text. Disappointed.
((syntactically like) I lisps)One can find out more about polymorphic mutation as a "counterexample" to Hindley-Milner type inference on Wikipedia [1]. It's a well-studied problem with space of solutions. Purity, weak references, the value restriction, etc. are all ways of dealing with this shortcoming of Hindley-Milner.
Interestingly, one of the first proposed solutions to this problem was suggested by Wright in the journal "LISP and Symbolic Computation" [2].
[1] https://en.wikipedia.org/wiki/Value_restriction#A_Counter_Ex...