Effects
Effects refer to side-effects performed by a computation. Generally these are producer effects, but more generally effects can refer to coeffects / consumer effects as well.
- Analysis/comparison of the semantics of producer effects in Haskell libraries
- Why use an effect system?
Producer Effects
Producer effects do things like the following:
- interaction with the environment, i.e. the IO monad in Haskell
- input/reader
- output/writer
- failure
- error handling (throw with catch)
- nondeterministic computation
- state
- more general algebraic effects
- Often capabilities can also be considered effects
Producer can be represented by monads, or more general structures such as productors (see: The Sequential Semantics of Producer Effects) that still provide an interpretation of thunking.