package travesty
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=01661918f73f33b0e6d0cf3851c2d5d6ef76b86332a3e76a4958689ff1a6fd3a
sha512=14e9b0e9ae39055c386c5e996055ce59edf57b9bf9b0055722632520f9c9b0270af571576950be982ed2b86e859361c7344166a38a85fa7d28d45be8f3e18c77
doc/travesty/Travesty/State/index.html
Module Travesty.State
Source
Haskell-style state monads.
State monads are a way to thread a modifiable, readable state record through a computation without resorting to mutability. At any point in a state-monad computation, we can peek
at the present value of the state, or modify
it, or do both.
We provide two signatures for state monads: one corresponding to the situation where the state type is fixed at the module level (S
), and one leaving the state type as part of the monad type (S2
). The former has a corresponding make functor; the latter has a direct implementation.
We also provide a functor To_S
for fixing the state type in an arity-2 monad after the fact.
Relation to state transformers
Like in Haskell, state monads are a special case of state transformers, corresponding to the application of those transformers to the identity monad.
If you need to run stateful computations that can fail, or are partial, or non-deterministic, and so on, use state transformers instead.
Signatures
For input and output module signatures for this module's functors, see State_types
.
Manipulating state monads
Implementations and functors
Make
makes an S (state monad with fixed state type) from a single state type.
M2
is a basic implementation of S2 (state monad with variable state type).