一連の入力を読み取り、それらを に変換したいと思います[String]
。そんなことがあるものか?
例えば:
> Enter a string: foo
> Enter a string: bar
> Enter a string: !
> The strings you've entered are ["foo", "bar"].
この場合、!
は入力の終わりを決定する制御文字です。
一連の入力を読み取り、それらを に変換したいと思います[String]
。そんなことがあるものか?
例えば:
> Enter a string: foo
> Enter a string: bar
> Enter a string: !
> The strings you've entered are ["foo", "bar"].
この場合、!
は入力の終わりを決定する制御文字です。
readLines :: String -> IO [String]
readLines msg = do
putStr msg
line <- getLine
if line == "!"
then return []
else
do
lines <- readLines msg
return (line:lines)
使用例
Prelude> readLines "Enter data: "
Enter data: foo
Enter data: oof
Enter data: fof
Enter data: ofo
Enter data: !
["foo","oof","fof","ofo"]
Prelude>
または
Prelude> readLines "Enter data: " >>= (\strings -> putStrLn ("The strings you've entered are " ++ show strings))
Enter data: fofo
Enter data: ofof
Enter data: !
The strings you've entered are ["fofo","ofof"]
Prelude>
または
main = do
strings <- readLines "Enter data: "
putStrLn $ "The strings you've entered are " ++ show strings
Real World Haskell の第 7 章から取った同様の例を次に示します。これは良いリソースです。
main = do
putStrLn "Greetings! What is your name?"
inpStr <- getLine
putStrLn $ "Welcome to Haskell, " ++ inpStr ++ "!"
文字列を読み取って出力する方法がわかったので、あとは 2 つの文字列を含む配列を作成して出力するだけです。ヒント:show
コマンドを試してください。
それでもサポートが必要な場合は、試したことを示し、表示されるエラー メッセージを含めてください。