I've realised that I have a much better understanding of the semantics of languages that are value oriented. You avoid murky questions like this:
try:
raise Exception('')
except:
return 1
finally:
return 2
There's no 'right' answer here when choosing how a PL should work.
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