Это-то понятно, для этого омега и нужна. Но бесконечный список бесконечных списков - это всего два уровня вложенности, а у дерева их может быть больше. Я не вижу как использовать тут омегу.
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 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! ;)