我用一個簡單的程序玩弄在Haskell:哈斯克爾做語法和I/O
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!
爲什麼是交互式環境和編譯器之間不同的行爲,我怎樣才能讓編譯器做我想做的事?
在此先感謝您的幫助!
'主要= putStr 「請輸入你的名字:」 >>函數getline >> = putStr。你好「 - 只是爲了好玩。 – 2011-06-03 20:25:38