John Millikin의 열거 자 패키지를 사용하고 있고 소켓 자체를 연결한다는 점을 제외하고는 Data.Enumerator.Binary.enumHandle
과 비슷한 것을 만들려고 시도하고 결과 핸들을 열거합니다. 어려움은 연결이 신뢰할 수 없다는 사실에서 비롯됩니다. 뭔가 잘못되면 열거하고 다시 연결하기를 바랍니다.반복적 인 반복자를 만드는 방법
일반적으로 Enumerator는 의미있는 Monad 인스턴스가 될 것으로 예상되지만, 함수에 대한 유형 별칭이기 때문에 모나드 동작은 그 입력 단계의 판독기 일 뿐이므로 많은 용도로 사용되지 않습니다 이리. 나는 단지 열거자를 반복하여 계속 열거하고, 열거자를 반복했다. catchError
을 사용했지만 예상했던대로하지 못했고 그 일을 파악할 수 없었기 때문에 누구나 멋진 관용적 접근법을 제안 할 수 있는지 궁금하다. 이. 내가 생략 한 많은 세부 사항이 분명히 있기 때문에 솔루션의 골격으로는 충분합니다.
아이디어가 있으십니까?
고마워요! 그것은 EOF에서 빈 ByteString을 반환하는 것처럼 보이고 (그리고 무한정 그렇게하는 것을 유지하기 때문에)'hGetSome'에 대한 예외를 잡는 대신에 EOF를 검사 할 필요가 있다는 것을 제외하면 작동했습니다. – copumpkin