Próbowałem to:Haskell: natychmiast odczytać znak wejściowy z konsoli, a nie po nowej linii
main = do
hSetBuffering stdin NoBuffering
c <- getChar
ale czeka, aż zostanie naciśnięty, który nie jest to, co chcę wejść. Chcę przeczytać postać natychmiast po naciśnięciu jej przez użytkownika.
Używam GHC v6.12.1 na Windows 7.
EDIT: obejście dla mnie było przejście od GHC do WinHugs, która obsługuje to poprawnie.
To naprawdę nie jest dobrym obejście. Prawdziwym rozwiązaniem jest jawne wybieranie IO z buforowaniem znaków; za pomocą getch z systemu conio.h. Łącze Arteliusa zawiera przykładowy kod do tego. – jrockway
To dobre rozwiązanie, jeśli mu odpowiada!Używanie innego narzędzia, które nie ma błędu, ma sens. Jeśli nie potrzebujesz funkcji językowych najnowszych kompilatorów ghc, WinHugs jest szybszy niż ghci czy winghci. Działa bez problemów i wygląda ładniej. Nie musisz też ": r", gdy edytujesz swój kod, który uwielbiam. – AndrewC
Jak to się ma do 'main = do hSetBuffering stdin NoBuffering; współdziałać z $ map Data.Char.toUpper'? W moim przypadku czeka na nową linię, zanim pojawi się jakikolwiek wynik. (Ubuntu, GHC 7.6.3.) – ominug