Ich bin total fest und ich fühle mich wie ich jetzt Hilfe gebrauchen kann, nur um gesund zu bleiben. Ich möchte etwas so einfaches wie Hinzufügen von Protokollierungsfunktionen zu einer Funktion, die Maybe
zurückgibt, aber egal, wie sehr ich versuche, ich kann nur nicht die Typen richtig.Wrapping Vielleicht in WriterT Logging hinzufügen
Dies ist (wie ich sie wahrnehmen) die nächste könnte ich:
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
Was mich noch einen Tippfehler ergibt:
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 }
Wie soll ich den Code anpassen machen kompilieren und Arbeit?
Vielen Dank für Ihre Hilfe, Kollegen Haskellers!
Dies ist wahrscheinlich das einzige, was ich nicht versucht habe, was ich haben sollte. Es funktioniert tatsächlich, danke! Du hast mich davor bewahrt, meinen Kopf gegen die Wand zu schlagen :-) – SkyWriter