import Control.Monad
import Data.Char
main = forever $ do
putStr "Give me some input: "
l <- getLine
putStrLn $ map toUpper l
私はハスケルを学んだことから、あなたはhaskellを学んでいます。私はこのコードを実行しようとすると、それは必要なように動作しません。putstrで間違ったタイミングでメッセージが表示される
l
Give me some input: L
abc
Give me some input: ABC
これを実行すると、文字列が最初に印刷されずに入力できます。いくつかの入力を提供した後、この場合はl
は、このように私を返します:Give me some input: L
。
何をすべきかは、Give me some input:
を入力して入力を求め、入力後に入力を大文字に戻します。
どうすればこの問題を解決できますか?ここでの問題はputStr
は改行を書き込みませんということです
import Control.Monad
import Data.Char
main = forever $ do
putStrLn "Give me some input: "
l <- getLine
putStrLn $ map toUpper l
:
バッファリングに問題がある可能性があります。 stdinとstdoutの 'hSetBuffering'でバッファリングを無効にして、問題が解決されているかどうか確認してください。 – Michail
プロンプトに 'putStr'の代わりに' putStrLn'を使用しますか? – Bergi
@Michail、それを設定した後に動作します。ありがとう! –