Ho provato questo:Haskell: leggere carattere input da console subito, non dopo newline
main = do
hSetBuffering stdin NoBuffering
c <- getChar
ma attende fino a quando la si preme, che non è quello che voglio entrare. Voglio leggere il personaggio immediatamente dopo che l'utente lo ha premuto.
Sto usando v6.12.1 ghc su Windows 7.
EDIT: soluzione per me muovevo dalla GHC a WinHugs, che supporta questo modo corretto.
che non è proprio una buona soluzione. La vera soluzione è scegliere in modo esplicito IO con buffer dei caratteri; usando il getch dal sistema conio.h. Il link di Artelius contiene un codice di esempio per questo. – jrockway
È una buona soluzione se gli si addice!Utilizzare uno strumento diverso che non ha il bug ha senso. Se non hai bisogno delle funzionalità linguistiche dei recenti compilatori ghc, WinHugs è più veloce di ghci o winghci nella mia esperienza. Funziona senza problemi e sembra più bello. Inoltre non è necessario ': r' quando hai modificato il tuo codice, che adoro. – AndrewC
In che modo si riferisce a 'main = do hSetBuffering stdin NoBuffering; interagisci $ map Data.Char.toUpper'? Nel mio caso attende una nuova riga prima che appaia qualsiasi uscita. (Ubuntu, GHC 7.6.3.) – ominug