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