gpt4 book ai didi

Haskell 做语法和 I/O

转载 作者:行者123 更新时间:2023-12-03 00:42:46 25 4
gpt4 key购买 nike

我正在用 Haskell 玩一个简单的程序:

hello :: String -> String
hello s = "Hello, " ++ (trim s) ++ "!\n"

trim :: String -> String
trim [] = []
trim s = head $ words s

main :: IO()
main = do putStr "\nPlease enter your name: "
name <- getLine
hstring <- return $ hello name
putStr hstring

这是我期望的输出:

Please enter your name: John Doe
Hello, John!

当我将程序加载到 ghci 中时,这会按预期工作。但是,当我使用编译程序时

ghc -o hello.exe hello.hs

它启动,等待输入,然后同时打印两个提示:

John Doe
Please enter your name: Hello, John!

为什么交互环境和编译器之间的行为不同,如何让编译器执行我想要的操作?

预先感谢您的帮助!

最佳答案

这是一个常见问题解答。您的线路正在缓冲。使用:

import System.IO

main = do
hSetBuffering stdout NoBuffering
...

此外,您的代码有点...独特。例如,您说:

hstring <- return $ hello name
putStr hstring

当你可以这样做时:

let hstring = hello name
putStr hstring

或者只是:

putStr $ hello name

关于Haskell 做语法和 I/O,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6222521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com