我在 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!
为什么交互环境和编译器的行为不同,如何让编译器做我想做的事?
在此先感谢您的帮助!