3
私は完全に立ち往生しています。 Maybe
を返す関数にロギング機能を追加するだけの単純なものが欲しいですが、どれほど難しいのですか、タイプを正しく取得できません。まだ私の入力ミス得Writerでラッピングをしてログを追加する可能性があります
import Data.Maybe
import Control.Monad
import Control.Monad.Writer
q :: Integer -> Maybe Integer
q x = if x > 7
then Just x
else Nothing
qlog :: Integer -> WriterT [String] Maybe Integer
qlog x = do
tell ["Querying " ++ show x]
return $ q x
:
Couldn't match type ‘Maybe Integer’ with ‘Integer’
Expected type: WriterT [String] Maybe Integer
Actual type: WriterT [String] Maybe (Maybe Integer)
In a stmt of a 'do' block: return $ q x
In the expression:
do { tell ["Querying " ++ show x];
return $ q x }
In an equation for ‘qlog’:
qlog x
= do { tell ["Querying " ++ show x];
return $ q x }
を、私はそれをコンパイルするためにコードを調整する必要がありますどのように(私はそれを感じるよう)
これは私が得ることができる最も近いです仕事?
ハスケラー君の助けをありがとう!
これはおそらく私が持っていなければならなかった唯一のものです。本当にうまくいきます、ありがとう!あなたは私の頭を壁にぶつけてから救った:-) – SkyWriter