Parsec
多数の小さなファイルに対してパーサーを実行しようとしていますが、開いているファイルが多すぎるというエラーが表示されます。厳密な IO を使用する必要があることは理解していますが、その方法がわかりません。これは問題のあるコードです:
files = getDirectoryContents historyFolder
hands :: IO [Either ParseError [Hand]]
hands = join $ sequence <$> parseFromFile (many hand) <<$>> files
注:私の<<$>>
機能はこれです:
(<<$>>) :: (Functor f1, Functor f2) => (a -> b) -> f1 (f2 a) -> f1 (f2 b)
a <<$>> b = (a <$>) <$> b