He intentado esto:Haskell: leer el carácter de entrada de la consola de inmediato, no después de nueva línea
main = do
hSetBuffering stdin NoBuffering
c <- getChar
pero espera hasta que el se pulsa ENTER, que no es lo que quiero. Quiero leer el personaje inmediatamente después de que el usuario lo presiona.
estoy usando v6.12.1 GHC en Windows 7.
EDIT: solución para mí fue pasar de GHC a WinHugs, que apoya esto correctamente.
Eso no es realmente una buena solución. La verdadera solución consiste en elegir explícitamente IO con búfer de caracteres; usando el getch del sistema conio.h El enlace de Artelius contiene un código de ejemplo para eso. – jrockway
¡Es una buena solución si le conviene!Usar una herramienta diferente que no tenga el error tiene sentido. Si no necesita las características del lenguaje de compiladores recientes de ghc, WinHugs es más rápido que ghci o winghci en mi experiencia. Funciona sin problemas y se ve mejor. Tampoco necesita '' r' cuando haya editado su código, lo que me encanta. – AndrewC
¿Cómo se relaciona con 'main = do hSetBuffering stdin NoBuffering; interactuar $ map Data.Char.toUpper'? En mi caso, espera una nueva línea antes de que aparezca ningún resultado. (Ubuntu, GHC 7.6.3.) – ominug