Tuyên bố từ chối: điều này được hỏi gần đây trong danh sách quán cà phê haskell. Lời xin lỗi của tôi cho bất cứ ai làm phiền bởi bài đăng kép.Soạn thư liệt kê trong Điều tra viên
Tất cả các gói iteratee-thực hiện mà tôi biết (ví dụ iteratee
, iterIO
, và conduit
) xác định một chức năng thành phần enumeratee, trừ gói enumerator
. Điều này dường như đối với tôi giống như một giới hạn nghiêm trọng, nhưng cũng có vẻ tương đối đơn giản để thực hiện:
import Data.Enumerator
import Data.Enumerator.Internal
(=$=) :: Monad m
=> Enumeratee a0 a1 m (Step a2 m b) -> Enumeratee a1 a2 m b
-> Enumeratee a0 a2 m b
(=$=) e01 e12 step = Iteratee $ do
step' <- runIteratee $ e12 step
runIteratee . joinI $ e01 step'
Có một số bản ghi nhớ ở đây mà tôi đang thiếu không? Hoặc một số lý do khác cho enumerator
không phải để xác định thành phần enumeratee?
Tôi đã gửi email cho tác giả/người duy trì [gói điều tra] (http://hackage.haskell.org/package/enumerator), John Millikin, liên kết anh ta với câu hỏi này. –