Tamamen sıkışmış durumdayım ve sanırım şimdi sadece yardım etmek için biraz yardım kullanabiliyorum. Ben Maybe
döndüren bir işlev için günlüğe kaydetme yetenekleri ekleme gibi basit bir şey istiyorum, ama ne kadar zorlu olursa olsun sadece doğru türleri alamıyorum. Hala bana bir yazım hatası verirSarma WriterT günlüğüne eklemek için
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 }
bunu derlemek yapmak için kodunu ayarlayın bileyim (bunu algıladıkları gibi)
Bu benim alabilir yakın ve iş?
Yardımlarınız için çok teşekkür ederim, Haskellers!
Muhtemelen denemediğim tek şey budur. Gerçekten çalışıyor, teşekkürler! Kafamın duvarına karşı daha fazla vurarak beni kurtardın :-) – SkyWriter