Chúng ta có thể hợp nhất hai traversals qua danh sách xs
trong biểu thứcLàm thế nào tôi có thể hợp nhất hai bản đồ trên cùng một danh sách?
(map f xs, map g xs)
như vậy
unzip (map (\x -> (f x, g x)) xs)
Có reasearch trên thực hiện loại phản ứng tổng hợp tự động?
(Có một nguy cơ để tạo ra một sự rò rỉ không gian ở đây nếu một trong những danh sách quay trở lại được tiêu thụ trước kia tôi quan tâm nhiều hơn trong việc ngăn ngừa các traversal thêm trên xs
hơn tiết kiệm không gian..)
Edit: Tôi thực sự không tìm cách áp dụng sự hợp nhất vào danh sách Haskell trong bộ nhớ thực tế, nơi phép biến đổi này có thể không có ý nghĩa tùy thuộc vào việc unzip
có thể hợp nhất với (các) người tiêu dùng của nó hay không. Tôi có một thiết lập mà tôi biết unzip
có thể hợp nhất (xem "FlumeJava: các đường ống song song dữ liệu dễ dàng, hiệu quả").
Không tự động, nhưng khá tốt đẹp: http://squing.blogspot.com/2008/11/beautiful-folding.html –
Trừ khi kết quả của cầu chì này với cái gì đó khác, chi phí tạo cặp và giải nén chúng sẽ lớn hơn chi phí của quá trình truyền tải phụ. – augustss
@augustss Không phải nếu quá trình truyền tải vượt quá một tệp lớn! Tôi không định áp dụng điều này vào danh sách thực tế. – tibbe