Ich habe diese versucht:Haskell: Eingabezeichen von der Konsole sofort lesen, nicht nach Newline
main = do
hSetBuffering stdin NoBuffering
c <- getChar
aber es wartet, bis die Eingabe gedrückt wird, was nicht das, was ich will. Ich möchte das Zeichen sofort lesen, nachdem der Benutzer es gedrückt hat.
Ich verwende ghc v6.12.1 auf Windows 7.
EDIT: Abhilfe für mich von GHC zu WinHugs bewegte, was dies richtig unterstützt.
wird wird, dass eine gute Abhilfe nicht wirklich ist. Die tatsächliche Problemumgehung besteht darin, explizit zwischen Zeichen gepufferte EA auszuwählen; mit dem getch aus dem System conio.h. Der Link von Artelius enthält Beispielcode dafür. – jrockway
Es ist ein guter Workaround, wenn es ihm passt!Es ist sinnvoll, ein anderes Tool zu verwenden, das den Fehler nicht enthält. Wenn Sie die Sprachfunktionen der letzten GhC-Compiler nicht benötigen, ist WinHugs meiner Erfahrung nach schneller als ghci oder winghci. Es funktioniert ohne viel Aufhebens und sieht schöner aus. Sie müssen auch nicht ': r', wenn Sie Ihren Code bearbeitet haben, die ich liebe. – AndrewC
Wie verhält es sich mit 'main = do hSetBuffering stdin NoBuffering; interagieren $ map Data.Char.toUpper'? In meinem Fall wartet es auf eine neue Zeile, bevor eine Ausgabe erscheint. (Ubuntu, GHC 7.6.3.) – ominug