L'état monade « Interface »Suite monade « Interface »
class MonadState s m where
get :: m s
put :: s -> m()
(+ retour et se lient) permet de construire tout calcul possible avec monade de l'Etat sans utiliser constructeur State
. Par exemple, State $ \s -> (s+1, s-1)
peut être écrit comme
do s <- get
put (s-1)
return (s+1)
Similairement, je ne dois utiliser Reader
constructeur, parce que je peux créer ce calcul en utilisant ask
, return
et (>>=)
. Précisément: Reader f == ask >>= return . f
.
Est-il vrai même pour les continuations - est-il possible d'écrire toutes les instances de Cont r a
en utilisant callCC
(la seule fonction MonadCont
), le retour et se lient, et ne jamais taper quelque chose comme Cont (\c -> ...)
?
Cependant, je m'attends à ce que cela change si vous avez des suites délimitées ... –