2016-08-24 7 views
1

私はハスケルにとって全く新しいです。私は一連の値を受け入れるコードを書いています。条件で終了する連続入力を読み取る

eg. 
1 2 
3 4 
0 0 

入力が停止し、私は次のことを行っているが、それは動作しません値1 2 3 4

を表示する必要があるときで最後の条件。助けが必要です。

main = myLoop 

myLoop = do inp <- getLine 
      if (inp == "0 0") then 
       putStrLn "END" 
      else do putStrLn(inp) 
         myLoop 
+3

あなたは何を意味を説明しなければならない "それは動作しません。"コンパイルエラーが出ますか? – ErikR

+0

いいえ、コンパイルエラーは発生しません。私はこれを行う方法を見つけることができません。手伝ってくれませんか? –

+2

次に、入力ファイルの出力例を教えてください。あなたはどんな出力を望んでいますか?プログラムを実行すると、3行目の出力が得られます.1行目では「1 2」、2行目では「3 4」、3行目では「END」です。 – ErikR

答えて

4

まず、ソースでタブを使用していないことを確認してください。私はputStrLnと、このようなmyLoopをラインアップしていた仕事にあなたの例を得るために:

第二
myLoop = do inp <- getLine 
      if (inp == "0 0") then 
       putStrLn "END" 
      else do putStrLn(inp) 
        myLoop 
       -- ^note putStrLn and myLoop are at the same column 

、私はあなたが数字/単語のリストで読みたいと仮定し、質問にお答えします。

readNums :: IO [String] 
readNums = do 
    x <- getLine 
    if x == "0 0" 
    then return [] 
    else do xs <- readNums 
      return (words x ++ xs) 

使用例:

main = do nums <- readNums 
      print nums 
+0

ありがとう...しかし、出力はどこですか。私は何も見ません... –

+1

追加の使用例を追加しました。あなたはリストを取得するので、あなたはそれで何でもしたいことができます。 – ErikR

+0

私を助けてくれてありがとう...これは... –

関連する問題