【发布时间】:2011-02-28 08:44:35
【问题描述】:
我试过了:
main = do
hSetBuffering stdin NoBuffering
c <- getChar
但它会等到按下回车键,这不是我想要的。我想在用户按下后立即读取字符。
我在 Windows 7 上使用 ghc v6.12.1。
编辑:对我来说,解决方法是从 GHC 转移到 WinHugs,它正确支持这一点。
【问题讨论】:
-
这不是一个很好的解决方法。真正的解决方法是显式选择字符缓冲 IO;通过使用系统 conio.h 中的 getch。 Artelius 的链接包含示例代码。
-
如果适合他,这是一个很好的解决方法!使用没有错误的不同工具是有意义的。如果您不需要最近 ghc 编译器的语言功能,根据我的经验,WinHugs 比 ghci 或winghci 更快。它可以毫不费力地工作,看起来更好。当您编辑代码时,您也不需要
:r,我很喜欢。 -
它与
main = do hSetBuffering stdin NoBuffering; interact $ map Data.Char.toUpper有什么关系?在我的情况下,它会在任何输出出现之前等待一个新行。 (Ubuntu,GHC 7.6.3。)
标签: windows haskell io ghc buffering