3 ms·
As far as I know the shiniest implementations in the effect typing world at the moment are Koka and Effekt, which are both languages in their own right. They ea
by Twey 11mo ago
As far as I know the shiniest implementations in the effect typing world at the moment are Koka and Effekt, which are both languages in their own right. They each have their own ideas about implementation to make effects (mostly) zero-cost.
https://koka-lang.github.io/ https://koka-lang.github.io/
https://effekt-lang.org/ https://effekt-lang.org/
Frank is pretty old now but perhaps a simpler implementation: https://github.com/frank-lang/frank https://github.com/frank-lang/frank
- thesz 11mo agoWhat is language feature in some language is a library in Haskell.
- Twey 11mo agoArguably an effect monad is an EDSL that has algebraic effects :) But the things these languages are experimenting with are low-level implementation details that wouldn't be amenable to embedding. There's no escaping the Haskell GC.
- thesz 11mo agoAtom [1] is an EDSL that escaped Haskell GC. Note that Atom takes ideas from Bluespec which compiles to hardware circuits, where GC is not availble. [1] https://hackage.haskell.org/package/atom One can make a Haskell EDSL with effects and everything and output a C (or some compiler's IR) code. These languages you mentioned repeat Rust's mistake. Rust's type system includes rules that remove definitions from the scope/environment. This is inherent and obligatory for uniqueness/linear types type systems. At the time Rust was conceived, Haskell had HList library [2] and Beyond Monads [3] extended state monad. Combining both would embed into Haskell most, if not all, Rust at the time, allowing to pursue research of how to combine borrow logic with algebraic effects. But Rust's developers preferred to go OCaml implementation (syntax first) way and not to pursue complexity issues of semantics. [2] https://hackage.haskell.org/package/HList [3] http://blog.sigfpe.com/2009/02/beyond-monads.html