-1

一連の入力を読み取り、それらを に変換したいと思います[String]。そんなことがあるものか?

例えば:

> Enter a string: foo
> Enter a string: bar
> Enter a string: !
> The strings you've entered are ["foo", "bar"].

この場合、!は入力の終わりを決定する制御文字です。

4

2 に答える 2

4
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
于 2013-06-11T12:13:43.027 に答える
3

Real World Haskell の第 7 章から取った同様の例を次に示します。これは良いリソースです。

main = do
   putStrLn "Greetings!  What is your name?"
   inpStr <- getLine
   putStrLn $ "Welcome to Haskell, " ++ inpStr ++ "!"

文字列を読み取って出力する方法がわかったので、あとは 2 つの文字列を含む配列を作成して出力するだけです。ヒント:showコマンドを試してください。

それでもサポートが必要な場合は、試したことを示し、表示されるエラー メッセージを含めてください。

于 2013-06-11T12:07:41.340 に答える