状態モナド「インターフェース」
class MonadState s m where
get :: m s
put :: s -> m ()
(+ return と bind) により、コンストラクターを使用せずに State モナドを使用して可能な計算を構築できますState
。たとえば、次のState $ \s -> (s+1, s-1)
ように記述できます。
do s <- get
put (s-1)
return (s+1)
同様に、とを使用Reader
してその計算を作成できるため、コンストラクターを使用する必要はありません。正確には: .ask
return
(>>=)
Reader f == ask >>= return . f
継続についても同じことが当てはまりますか - Cont r a
usingのすべてのインスタンスcallCC
( の唯一の関数MonadCont
) を記述し、 return と bind を作成して、 のようなものを入力しないことは可能Cont (\c -> ...)
ですか?