Haskell 不 return 来自 getLine
Haskell does not return from getLine
出于某种原因,Haskell 在我的机器上从不 return 来自任何 getLine 调用。例如,我尝试 运行 以下代码直接来自 Learn You a Haskell for Great Good:
main = do
putStrLn "Hello, what's your name?"
name <- getLine
putStrLn ("Hey " ++ name ++ ", you rock!")
当我 运行 它时,第一行被打印出来,当我输入一个名字时,我看到了我的输入,但是当我按下 Enter 时,程序只是阻塞在那里,从不打印最后一行。
我该如何解决这个问题?
编辑:我运行从 Sublime IDE 中获取它,也许这与它有关
快速搜索 Sublime 运行 的程序后,我发现 a youtube video (edit: and this SO post) 说 Sublime 的 "run program" 功能只能显示输出,不能读取输入。
因此看起来您必须从命令行或使用 :main
从 GHCi 中 运行 您的程序。后者可能是最方便的,因为 Sublime 实际上支持 GHCi 选项卡,因此您仍然可以在 Sublime 中执行所有操作。
这似乎是 Sublime 的 Build
命令中的一个限制(假设这是您正在使用的命令)。
Sublime 使用 runhaskell
执行脚本,但显然,它不捕获 STDIN(这有点道理 - 构建结果通常是 read-only 而不是交互式会话)。
解决方法:运行 命令行中的脚本
runhaskell script.hs
一切都按预期进行
出于某种原因,Haskell 在我的机器上从不 return 来自任何 getLine 调用。例如,我尝试 运行 以下代码直接来自 Learn You a Haskell for Great Good:
main = do
putStrLn "Hello, what's your name?"
name <- getLine
putStrLn ("Hey " ++ name ++ ", you rock!")
当我 运行 它时,第一行被打印出来,当我输入一个名字时,我看到了我的输入,但是当我按下 Enter 时,程序只是阻塞在那里,从不打印最后一行。
我该如何解决这个问题?
编辑:我运行从 Sublime IDE 中获取它,也许这与它有关
快速搜索 Sublime 运行 的程序后,我发现 a youtube video (edit: and this SO post) 说 Sublime 的 "run program" 功能只能显示输出,不能读取输入。
因此看起来您必须从命令行或使用 :main
从 GHCi 中 运行 您的程序。后者可能是最方便的,因为 Sublime 实际上支持 GHCi 选项卡,因此您仍然可以在 Sublime 中执行所有操作。
这似乎是 Sublime 的 Build
命令中的一个限制(假设这是您正在使用的命令)。
Sublime 使用 runhaskell
执行脚本,但显然,它不捕获 STDIN(这有点道理 - 构建结果通常是 read-only 而不是交互式会话)。
解决方法:运行 命令行中的脚本
runhaskell script.hs
一切都按预期进行