Экземпляр монады для двоичного дерева

Я построил двоичное дерево с помощью:

data Tree a = Empty 
              | Node a (Tree a) (Tree a)
              deriving (Eq, Ord, Read, Show)

Как я могу создать экземпляр класса типа Monad для этого дерева? И могу ли я сделать это на другом?

Я пытаюсь:

instance Monad Tree where
    return x = Node x Empty Empty 
    Empty >>= f = Empty
    (Node x Empty Empty) >>= f = f x 

Но я не могу сделать (>> =) для Узла x слева направо.

Спасибо.

25
задан 0xAX 23 July 2011 в 06:26
поделиться