LINUX.ORG.RU

История изменений

Исправление dave, (текущая версия) :

Про аналог ArrowLoop я, вообще, молчу:

instance MonadFix m => ArrowLoop (Kleisli m) where
    loop (Kleisli f) = Kleisli (liftM fst . mfix . f')
      where f' x y = f (x, snd y)

Обратить особое внимание на mfix

Исходная версия dave, :

Про аналог ArrowLoop я, вообще, молчу:

instance MonadFix m => ArrowLoop (Kleisli m) where
    loop (Kleisli f) = Kleisli (liftM fst . mfix . f')
      where f' x y = f (x, snd y)

Обратить особое внимание на mfix