О, замечательно! :) Клевая реализация ... Там ошибка есть ... Если поправить, то уже не будет так красиво Напомнило "могу печатать 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
no subject
Но там ошибка есть, да. Этот bfs не завершается :-( А если поправить, то уже не будет так красиво.
no subject
Клевая реализация ... Там ошибка есть ... Если поправить, то уже не будет так красиво
Напомнило "могу печатать 1200 символов в минуту, но такая фигня получается" ;)
no subject
no subject
Специально для таких случаев.
no subject
no subject
no subject
В общем, если я чего не вижу - ткни носом.
no subject
no subject
no subject
no subject
Haskell is the language of choice for drunken programmers! ;)
no subject