At the moment I'm aware of the following methods to integrate side-effects into purely functional programming languages:
- effect systems
- continuations
- unique types
- monads
Monads are often cited to be the most effective and most general way to do this.
Which other methods exist? How do they compare?
Arrows, which are more general than monads.