我用以下方式构建了二叉树:
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 左右子节点做(>>=)操作。
谢谢。
join :: Tree (Tree a) -> Tree a
如何运作。 - dave4420join
。您可以让join
进行替换,然后Tree
将成为一个单子。 - augustss