私は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!
対話型環境とコンパイラーで動作が異なるのはなぜですか? また、コンパイラーに希望どおりの動作をさせるにはどうすればよいですか?
助けてくれてありがとう!