-> State s b
a -> Maybe b
a -> Writer s b
Стрелки:
State s a b
Kleisli Maybe a b
Kleisli Maybe a b
State написал без Kleisli т.к. его можно представить как:
newtype State s a b=State {runState :: (s,a) -> (s,b)}
любая монада образует стрелку (стрелку Кляйсли), но не любая стрелка даёт монаду. то есть стрелка — более общая штука, или менее сильное условие
Обсуждают сегодня