Да ну! mdo - это всего лишь что то вроде letrec только для do. Кстати, с mdo я не первый. В общем как всегда. В самом пропозале mdo (A recursive do in Haskell (http://citeseer.ist.psu.edu/erk02recursive.html)) приводится похожий пример :-/
Но вот идея с одновременным использование 2 list и mutable nodes представлений мне нравится. Очень эффективно получается. Хотя наверняка тоже до меня кто то придумал.
Что такое стрелки SP? И, честно говоря, сомневаюсь, что есть что то требующее использование mdo. Обычно последующую привязку можно сделать отложенными вычислениями.
no subject
Моё кунфу не дотягивает. ;)
У тебя, вон, mdo уже используется. ;)
no subject
Кстати, с mdo я не первый. В общем как всегда. В самом пропозале mdo (A recursive do in Haskell (http://citeseer.ist.psu.edu/erk02recursive.html)) приводится похожий пример :-/
Но вот идея с одновременным использование 2 list и mutable nodes представлений мне нравится. Очень эффективно получается. Хотя наверняка тоже до меня кто то придумал.
no subject
no subject
no subject
newtype SF m a b = SF { runSF :: a -> m (b, SF m a b) }
loopSF sf = SF $ \a -> mdo ((c,d),sf') <- runSF sf (a,d)
return (c,loopSF sf')