notepad++ 中的 Haskell 控制台 IO

标签 haskell notepad++

我最近开始学习Haskell。我有这个代码

module Main
    where

import IO

main =  do 
            hSetBuffering stdin LineBuffering
            putStrLn "Please enter your name: "
            name <- getLine
            putStrLn ("Hello, " ++ name ++ ", how are you?")

我将 GHC 编译器与 notepad++ 编辑器一起使用。问题是交互是这样的:

Process started >>>
Vlad
Please enter your name:
Hello, Vlad, how are you?
<<< Process finished.

如您所见,只有在我输入内容后才会写入输出。这有点出乎我的意料,因为我确信程序会首先询问我的名字,然后我输入它,然后它会打招呼。好吧,如果我手动运行 exe,这正是会发生的情况,但如果我使用 notepad++ 运行它并使用其控制台包装器,则不会发生...

如何让 notepad++ 在应该的时候显示输出,而不是在程序终止之前显示全部输出?这可能吗?

最佳答案

尝试将stdout设置为LineBuffering!另外,在 ghci 中加载程序而不是运行编译版本似乎根本不需要任何缓冲...

顺便说一句,我不知道 NPP 中的控制台 - 感谢您向我指出!

关于notepad++ 中的 Haskell 控制台 IO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2802653/

相关文章:

sockets - 如何在 Haskell 中从 Socket 读取字节

haskell - 以与Free Monad兼容的方式定义Free Bind

haskell - 应用参数可以是 Ints 或 Doubles 的函数

regex - 将文件中的每 n 个换行符替换为制表符

使用 Notepad++ 比较文件并仅返回差异

haskell - 创建单色 PNG 图像时堆栈溢出

haskell - 大数整数类型的性能

colors - 更改notepad++编辑器的背景颜色

regex - 忽略 Npp 正则表达式中的特定字符

linux - 带有 Google Compute Engine 的 Notepad++ FTP 插件