In Haskell you very often acquire values using the with... idiom using functions of type (a -> IO r) -> IO r. This idiom forms a Monad, which is a special case of the ContT monad (from transformers) or the Codensity monad (from kan-extensions). The main purpose behind this package is to provide a restricted form of these monads specialized to this unusually common case. The reason this package defines a specialized version of these types is to: * be more beginner-friendly, * simplify inferred types and error messages, and: * provide some additional type class instances that would otherwise be orphan instances
12 lines
620 B
Plaintext
12 lines
620 B
Plaintext
In Haskell you very often acquire values using the with... idiom using
|
|
functions of type (a -> IO r) -> IO r. This idiom forms a Monad, which is a
|
|
special case of the ContT monad (from transformers) or the Codensity monad
|
|
(from kan-extensions). The main purpose behind this package is to provide a
|
|
restricted form of these monads specialized to this unusually common case.
|
|
|
|
The reason this package defines a specialized version of these types is to:
|
|
* be more beginner-friendly,
|
|
* simplify inferred types and error messages, and:
|
|
* provide some additional type class instances that would otherwise be
|
|
orphan instances
|