Serkan Muhcu
Serkan Muhcu
This seems to me like a straightforward transformation to codata: - class definition -> interface definition - instance -> top level object - type constraints -> implicit parameters I guess...
A suggestion for syntax: ``` class C[A] { // function declarations } instance C[T] { // function definitions } // type constraints def f [A] (a: A) = {...} ```
Another idea would be to add implicit parameters to Effekt and use regular codata to express type classes: ``` // implicit parameter of type A def f () = {...}...
Update: I changed the example a bit and the output is NOT what I expected. ``` effect E { def e() : (() => Unit at {}) } def main()...
I want to add something to this list: Desugar `resume()` to `resume(())`. Alternatively, allow effect operations to have 0 return values.