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.