О, замечательно! :) Клевая реализация ... Там ошибка есть ... Если поправить, то уже не будет так красиво Напомнило "могу печатать 1200 символов в минуту, но такая фигня получается" ;)
Это-то понятно, для этого омега и нужна. Но бесконечный список бесконечных списков - это всего два уровня вложенности, а у дерева их может быть больше. Я не вижу как использовать тут омегу.
elemTree :: Eq a => a -> Tree a -> Bool
elemTree e tree = or $ map (==e) $ runOmega $ flatten tree
flatten Nil = fail ""
flatten (Branch l a r) = return a `Monad.mplus` flatten l `Monad.mplus` flatten r
Действительно, совсем переставлять порядок в flatten (BRanch ...) не получается. flatten l `mplus` return a `mplus` flatten r не работает.
no subject
Date: 2011-12-21 04:36 pm (UTC)no subject
Date: 2011-12-21 05:11 pm (UTC)Но там ошибка есть, да. Этот bfs не завершается :-( А если поправить, то уже не будет так красиво.
no subject
Date: 2011-12-21 07:22 pm (UTC)Клевая реализация ... Там ошибка есть ... Если поправить, то уже не будет так красиво
Напомнило "могу печатать 1200 символов в минуту, но такая фигня получается" ;)
no subject
Date: 2011-12-21 08:04 pm (UTC)no subject
Date: 2011-12-21 08:59 pm (UTC)Специально для таких случаев.
no subject
Date: 2011-12-21 10:16 pm (UTC)no subject
Date: 2011-12-21 10:36 pm (UTC)no subject
Date: 2011-12-21 10:38 pm (UTC)В общем, если я чего не вижу - ткни носом.
no subject
Date: 2011-12-21 10:59 pm (UTC)no subject
Date: 2011-12-21 11:19 pm (UTC)no subject
Date: 2011-12-21 11:20 pm (UTC)no subject
Date: 2011-12-21 11:28 pm (UTC)Haskell is the language of choice for drunken programmers! ;)
no subject
Date: 2011-12-21 05:13 pm (UTC)