9 ms·
Reading the tour[1], I got the impression of being struck by something not that surprising, but still fundamentally groundbreaking. Beyond just the idea of a g
by ivanbakel 7y ago
Reading the tour[1], I got the impression of being struck by something not that surprising, but still fundamentally groundbreaking.
Beyond just the idea of a global program store (which I hope has space for some virtualenv equivalent), the cleverness of effect handlers as a first-class language feature is very exciting.
Once the type system is more mature, this could easily be the next kind of Haskell - a language which redefines modern ideas of good programming.
1: https://www.unisonweb.org/docs/tour https://www.unisonweb.org/docs/tour
- the_duke 7y agoSince it took me a while to find it, the relevant documentation is under "Abilities and Ability Handlers" [1] [1] https://www.unisonweb.org/docs/language-reference#abilities-and-ability-handlers https://www.unisonweb.org/docs/language-reference#abilities-...
- thesuperbigfrog 7y agoUnison seems to combine ideas from Forth, Haskell, and Clojure's Datomic and stir them together into an interesting mix: Forth ideas: a global dictionary with pre-existing and user-definable words Haskell ideas: functional programming and type signatures of functions / words Clojure Datomic ideas: immutable store of object definitions that append and use references to point to the latest definitions. I am curious how I/O and error handling are done in Unison.
- ivanbakel 7y agoIf you look at the other reply to my comment, someone has linked the Unison docs on their effect handlers implementation - which is what is used for IO, and with any luck, error handling as well. Haskell has several packages for effect handlers, and they're taking off in programming and category theory circles as alternatives to monads for IO. The short summary is that you can write code with side-effects that you don't define the implementation for, and then let call sites handle those effects or defer them.