Да ну! 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
Date: 2006-12-12 11:53 am (UTC)Моё кунфу не дотягивает. ;)
У тебя, вон, mdo уже используется. ;)
no subject
Date: 2006-12-12 12:22 pm (UTC)Кстати, с mdo я не первый. В общем как всегда. В самом пропозале mdo (A recursive do in Haskell (http://citeseer.ist.psu.edu/erk02recursive.html)) приводится похожий пример :-/
Но вот идея с одновременным использование 2 list и mutable nodes представлений мне нравится. Очень эффективно получается. Хотя наверняка тоже до меня кто то придумал.
no subject
Date: 2006-12-12 03:48 pm (UTC)no subject
Date: 2006-12-12 03:59 pm (UTC)no subject
Date: 2006-12-12 04:05 pm (UTC)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')