aboutsummaryrefslogtreecommitdiff
path: root/docs/EFFECTS.md
blob: aef1a6cb7b797fd0938f619b14ba768f3c19619e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Effects

I don't know enough about effects to get started with this section.

Existing systems to learn from:
- https://koka-lang.github.io/koka/doc/index.html
- https://effekt-lang.org/
- https://github.com/zesterer/tao
- https://v2.ocaml.org/manual/effects.html
- https://www.stephendiehl.com/posts/exotic03.html
- https://github.com/ocaml-multicore/ocaml-effects-tutorial
- https://blog.poisson.chat/posts/2023-01-02-del-cont-examples.html
- https://arxiv.org/abs/1807.05923

Effects are common "impure" operations that disrupt the regular flow of a language / function. Things like exceptions, async, & IO and "handlers" for such can all be captured into an effects system. Effect systems are in an active state of development: by far their hardest problem is *syntactic*, however. How much information is okay to expose to the user? How much is helpful?