2017-06-29 2 views
1

Haskellでは、任意の数のファイルに書き込むにはどうすればよいですか?Haskellの複数のファイルに書き込む

例として、aからzまでの文字を取り込み、その内容の名前のファイルに入れたいとします。最初の試みは、次の操作を実行することでした。

次のエラー生成
main :: IO() 
main = do 
     let letter = map (:"") ['a'..'z'] 
     zipWith writeFile letter letter 

Couldn't match expected type 'IO()' with actual type '[IO()]'

を行うブロック内のリストをループへの道が、私の避難所があるはずのように私は感じますまだそれを見つけることができませんでした。

+0

「zipWith」をダミーアクションで折り畳んで正しいタイプにすることができますか? – bli

+0

@bliここで苦労しているのは、複数のIOアクションを実行したいので、タイプを[IO()]にしたいということです。私はdoブロックがリストを受け入れるか、それとも私のためにそれを平らにする方法があるべきであるように感じる。 – martin

答えて

2

必要な機能はzipWithMです。

Re。 way to loop through a list in a do block、これには関数sequenceもあるので、sequence $ zipWith writeFile letter letterと書くことができます。

+0

メインのタイプを 'main :: IO [()]'に変更しなければなりませんでしたが、それは私のためでした。ありがとう。 – martin

+1

@martinこれはオプションですが、 'main :: IO()'を残し、 'do'ブロックの最後のエントリとして' return() 'を' zipWithM'行の後に追加する方が一般的です。 – chi

+0

@chi知っておいてよかった、ありがとう。 – martin

関連する問題