Chức năng foldl
đi kèm với một analog tương tự foldl'
. Có một lý do tại sao scanl
không cần thay thế scanl'
hoặc đơn giản là chúng không bao gồm nó trong thư viện chuẩn?Tại sao không có chức năng scanl 'trong thư viện chuẩn Haskell?
9
A
Trả lời
11
Không cần thiết. Độ nghiêm ngặt của foldl'
cho phép nó loại bỏ các khối ngay lập tức khi nó đi qua danh sách đầu vào của nó.
foldl' (+) 0 [1,2,3] foldl (+) 0 [1,2,3]
foldl' (+) 1 [2,3] foldl (+) (0 + 1) [2,3]
foldl' (+) 3 [3] foldl (+) ((0 + 1) + 2) [3]
foldl' (+) 6 [] foldl (+) (((0 + 1) + 2) + 3) []
6 (((0 + 1) + 2) + 3)
((1 + 2) + 3)
(3 + 3)
6
Nhưng khi bạn làm scanl
nó tạo ra một danh sách có chứa mỗi một trong những bước
scanl (+) 0 [1,2,3]
[ 0
, 0 + 1
, (0 + 1) + 2
, ((0 + 1) + 2) + 3
]
Và bạn phải đi qua toàn bộ danh sách để xem kết quả cuối cùng cho phép bạn kiểm soát như thế nào thunks buộc . Điều này đẩy kiểm soát đánh giá cho người tiêu dùng của danh sách.
6
Vâng, tôi không chắc chắn nếu scanl'
không cần là, nhưng nó có thể là một nhu cầu hiếm hơn nhiều so với foldl'
, vì bạn thường tiêu thụ là kết quả của scanl
phần tử bằng phần tử, và do đó buộc nó khi bạn đi chính xác cách foldl'
.
Các vấn đề liên quan
- 1. Có chức năng `lật` trong thư viện chuẩn OCaml không?
- 2. Tại sao không có << trong thư viện chuẩn Haskell?
- 3. Cách chức năng thư viện trong Haskell được thực hiện
- 4. Thư viện chuẩn Haskell là gì?
- 5. Tại sao không có chức năng strnchr?
- 6. Có lý do tại sao không có std :: identity trong thư viện chuẩn không?
- 7. Có chức năng ảo thuần trong Thư viện chuẩn C++ không?
- 8. Có chức năng "chuỗi" đơn nhất trong Haskell không?
- 9. Phiên bản có thể in của thư viện chuẩn Haskell
- 10. Có chức năng haskell cho các ngày không?
- 11. Có giải pháp thư viện chuẩn nào cho vấn đề Haskell này không?
- 12. Có thư viện Lập trình chức năng cho .NET không?
- 13. có chức năng tee tồn tại ở đâu đó trong thư viện F # không?
- 14. "Không thể tìm thấy dự án hoặc thư viện" cho các chức năng VBA chuẩn
- 15. Haskell: làm thư viện chuẩn giả sử Eq và Ord có tương thích không?
- 16. Chức năng trong Haskell
- 17. Tại sao không có tiêu chuẩn :: inplace_merge_unique?
- 18. Thư viện chuẩn Python có thực sự chuẩn không?
- 19. Tại sao có chuỗi __version__ trong một số mô-đun của thư viện chuẩn Python?
- 20. Tại sao không phải là có một chức năng memswap chuẩn
- 21. Chức năng thực hiện số nguyên ở đâu đó trong thư viện Haskell?
- 22. Có một số thư viện Haskell chuẩn xử lý giao tiếp quy trình không?
- 23. Thư viện F # có hàm chuẩn cho `argMax` không?
- 24. Tại sao số học BigInt, BigNum hoặc Arbitrary-precision không có trong STL hoặc các thư viện chuẩn cho C++?
- 25. Làm thế nào để ngăn chặn pycallgraph từ vào chức năng thư viện tiêu chuẩn?
- 26. Tôi có thể sử dụng năng động trong thư viện lớp chuẩn .NET không?
- 27. Chức năng gọi thư viện Javascript d3
- 28. Tại sao có tổng chức năng
- 29. tại sao thư viện không cố gắng sử dụng tên duy nhất cho các tên chức năng phổ biến
- 30. Tại sao Rust xuất toàn bộ thư viện chuẩn của nó khi xây dựng một DLL?