FSet (a CL library) has a great defence of default types being immutable with value semantics.
miniblog.
Related Posts
A really nice explanation of lisp semantics, using userland code!
For example, you can define let in terms of let* and vice versa.
@RenewedRebecca That's correct, but I was thinking that offering threading to a user might make them more tolerant of a slow interpreter.
For example, if I have an AST walker but provide Clojure semantics, users can hopefully get a big speedup by using all the cores in their application.
On teaching Haskell, and which parts of the semantics are tricky for newcomers: https://ciobaca.substack.com/p/pedagogical-downsides-of-haskell