Ich bin gerade über etwas gestolpert, das ich nicht verstehe.Unterschied in der getLine-Funktionalität mit GHCi vs. runhaskell
Wenn ich mit GHCi bin und verwenden getLine
ich folgendes erhalten
Prelude> a <- getLine
Test<Backspace>oo<CR> -- the Backspace action results in a '^?'
Prelude> a
"Test\DELoo"
Wenn ich die gleichen in einer Haskell-Datei
module Main where
main :: IO()
main = do a <- getLine
putStrLn a
schreiben und führen Sie das Skript mit runhaskell und geben Sie die gleiche Eingabe, die Rücktaste löscht das 't' wie erwartet.
Warum gibt es einen Unterschied?
Sie sagen, dass ich 'viele unerwünschte Nebenwirkungen 'haben würde, sind sie nur in ghci unerwünscht oder gibt es eine Art Schutz dagegen in einer kompilierten Version - können Sie das ein bisschen genauer erklären? – epsilonhalbe
Ob Sie es tun oder nicht - ich werde diese Antwort akzeptieren, sobald ich kann! – epsilonhalbe
Sie sind in GHCi unerwünscht. Es wird mit der Art und Weise, wie GHCi selbst Eingaben liest, unordentlich werden. Wenn Sie also Sachen eingeben, die GHCi ausführen soll, sehen Sie sie erst, wenn Sie die Return-Taste drücken. – kosmikus