我很难理解如何为二叉树的单子正确实现 (>>=)。我有以下二叉树:
data BinTree a = Leaf a | Node a (BinTree a) (BinTree a) 
    deriving (Eq, Ord, Show, Read) 
这是我的 monad 的 (>>=) 运算符:
Node x l r >>= f = Node (f x) (l >>= f) (r >>= f)
                 __________^
我不断收到此错误:
Couldn't match type `b' with `BinTree b'
`b' is a rigid type variable bound by
  the type signature for
    >>= :: BinTree a -> (a -> BinTree b) -> BinTree b
  at test.hs:153:5
 In the return type of a call of `f'
 In the first argument of `Node', namely `(f x)'
 In the expression: Node (f x) (l >>= f) (r >>= f)
所以我不明白如何获得正确类型的正确叶子?
任何帮助表示赞赏
谢谢