Ich versuche, die aktuelle Zeit nach jeder in ghci
ausgewerteten Zeile zu drucken. Hier ist mein Code so weit:Ich kann -interactive-print nicht verwenden, um Zeitstempel nach jeder Zeile in ghci zu drucken
module TimePrint (timePrint) where
import System.IO
import Data.Time
getTime :: IO String
getTime = do
now <- getCurrentTime
return (formatTime defaultTimeLocale "%T" now)
timePrint :: Show a => a -> IO()
timePrint a = putStrLn $ show a ++ "\n" ++ getTime
Und ich bin mit ghci
wie so: ghci -interactive-print=TimePrint.timePrint TimePrint
Der Fehler Ich erhalte, ist dies:
TimePrint.hs:12:44:
Couldn't match expected type ‘[Char]’ with actual type ‘IO String’
In the second argument of ‘(++)’, namely ‘getTime’
In the second argument of ‘(++)’, namely ‘"\n" ++ getTime’
Failed, modules loaded: none.
entnehme ich, es hat etwas zu tun mit der Tatsache, dass timePrint nicht in der IO-Monade ist, aber ansonsten habe ich keine Ahnung. Irgendwelche Ideen? Ich würde jede Zeile von ghci
Ausgabe mag wie etwas aussehen:
Prelude> 1+2
3
11:59:20
Prelude> 3+4
7
12:00:16
usw.
In anderen Worten, <- soll die IO-Aktion ausführen, und verwandeln Sie es in (in diesem Fall) eine Zeichenfolge? – masterchefsenior
@masterchefsenior genau! – Franky