I strongly recommend to check all other papers and articles on https://okmij.org/ftp/, every single one of them is brilliant and insightful. I love the pedagogy, the writing style and clarity. Oleg Kiselyov is one of the best technical writers I've discovered recently.
If you are looking for real-world code for an effect system, not just a PDF paper, you should probably look at the eff library: https://github.com/hasura/eff
The acknowledgement section on that GitHub README mentions this paper.
Also effect-ts in TypeScript world, which is by far the most popular effect system around (quite sure it has overtaken Scala's ZIO from which it is inspired).
The ecosystem is massive.
Cons: TypeScript is a great type system but requires some investment to get the best out of it, it's also very verbose.
Pros: you have access to the entirety of the TypeScript ecosystem.
Great exploration! Freer monads really make it easier to define and compose effects in a type-safe way without boilerplate. They’re a powerful alternative to traditional monad transformers for building extensible, modular effect systems in functional programming.”
I strongly recommend to check all other papers and articles on https://okmij.org/ftp/, every single one of them is brilliant and insightful. I love the pedagogy, the writing style and clarity. Oleg Kiselyov is one of the best technical writers I've discovered recently.
If you are looking for real-world code for an effect system, not just a PDF paper, you should probably look at the eff library: https://github.com/hasura/eff
The acknowledgement section on that GitHub README mentions this paper.
Also effect-ts in TypeScript world, which is by far the most popular effect system around (quite sure it has overtaken Scala's ZIO from which it is inspired).
The ecosystem is massive.
Cons: TypeScript is a great type system but requires some investment to get the best out of it, it's also very verbose.
Pros: you have access to the entirety of the TypeScript ecosystem.
https://effect.website/
Great exploration! Freer monads really make it easier to define and compose effects in a type-safe way without boilerplate. They’re a powerful alternative to traditional monad transformers for building extensible, modular effect systems in functional programming.”
I would appreciate a simpler conceptual explanation for someone not steeped in the Haskell / functional programming world :-)
(2015) More information here: https://okmij.org/ftp/Haskell/extensible.