私はJohn Millikinの列挙子パッケージを使用しています。ソケット自体を接続し、結果のハンドルを列挙しようとする点を除いて、Data.Enumerator.Binary.enumHandle
にほぼ等しいものを作成しようとしています。難しさは、接続が信頼できないという事実から来ています。何かが間違っていたら、再接続して列挙を再開したいと思います。永遠に再試行する列挙子を作成する方法
私は通常Enumeratorが意味のあるMonadインスタンスであることを期待していますが、関数の型別名であるため、モナドの動作は入力ステップの読者に過ぎません。ここに。 catchError
を使用して列挙子を繰り返しループしていたものを一緒に投げ込もうとしましたが、期待したことができず、何をしているのか分からなかったので、誰でも素敵な慣用的アプローチを提案できますか?この。明らかに私が省略した多くの詳細があるので、私は解決策の骨組みだけでうまくいく。
アイデア?
ありがとうございます! 'hGetSome'で例外をキャッチするのではなく、EOFをチェックする必要があることを除いて、動作しました.EOF上で空のByteStringを返すように見えるので(無限に続けます) – copumpkin