El estadoContinuación mónada "interfaz" mónada "interfaz"
class MonadState s m where
get :: m s
put :: s -> m()
(+ retorno y bind) permite construir cualquier posible cálculo con mónada Estado sin utilizar State
constructor. Por ejemplo, State $ \s -> (s+1, s-1)
se puede escribir como
do s <- get
put (s-1)
return (s+1)
Similarmente, no tengo que usar Reader
constructor, porque puedo crear ese cálculo utilizando ask
, return
y (>>=)
. Precisamente: Reader f == ask >>= return . f
.
¿Es lo mismo ocurre con las continuaciones - es posible escribir todos los casos de uso de Cont r a
callCC
(la única función en MonadCont
), el retorno y se unen, y nunca escribir algo así como Cont (\c -> ...)
?
Sin embargo, espero que esto cambie si tiene continuaciones delimitadas ... –