2011-04-12 68 views
2

我尝试写一本单子哈斯克尔 - 错误的执行

data W x = W x [String] 

instance Monad W where 
return x = W x [] 
W a h1 >>= f = case f a of 
    W b h2 -> W b (h1++h2) 

但是,现在,当我将使用这个单子,并尝试写回或>> =在代码中我得到编译警告:

实例声明中没有显式方法或Prelude.return的默认方法。 Prelude没有明确的方法或默认方法。>> =在实例声明中。

有谁知道如何解决这个警告?

非常感谢你

回答

6

假设代码的布局是完全一样的显示在你的问题,问题是,你的return>>=定义不是缩进,所以他们被定义为新的顶级函数与Monad类无关。缩进他们,它应该工作。

+0

:)非常感谢你这是解决方案 – 877 2011-04-12 13:40:23