2011-04-12 52 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