Tìm hiểu Bạn một Haskell nói về foldl'
thay thế cho foldl
vì dễ bị tràn ngăn xếp.Câu hỏi về nếp gấp và ngăn xếp ngăn xếp
- Theo LYAH,
foldl (+) 0 (replicate 1000000 1)
nên ngăn xếp tràn, nhưng không có trên máy của tôi. Tại sao không? Thậm chí nếu tôi tăng số đó lên 10 triệu, nó không bị tràn. Nó chỉ mất rất nhiều bộ nhớ cho đến khi máy tính OS X của tôi trở nên không sử dụng được và tôi phải khởi động lại nó. - Trong trường hợp nào tôi nên sử dụng
foldl
thay vìfoldl'
? Trong kinh nghiệm của tôifoldl'
"chỉ hoạt động" trong khifoldl
về cơ bản có thể sụp đổ máy tính của tôi (xem ở trên). - Tôi không hiểu tại sao không có gì tương tự cho
foldr
. Tại sao không thểfoldr
tràn ngăn xếp và tại sao không cófoldr'
?
bản sao có thể có của [Chọn trái và phải trong danh sách vô hạn] (http://stackoverflow.com/questions/7396978/left-and-right-folding-over-an-infinite-list) –
Câu trả lời cho câu hỏi thứ hai của bạn và các câu hỏi thứ ba đang chờ bạn tại https://www.haskell.org/haskellwiki/Foldr_Foldl_Foldl ' – Jubobs
Điểm chính xác mà tại đó máy tính của bạn sẽ đạt đến một stackoverflow hoặc hết bộ nhớ phụ thuộc vào hệ điều hành của bạn, những chương trình khác mà bạn chạy và phần cứng vật lý của bạn. Một quả mâm xôi pi sẽ hết RAM sớm hơn máy tính đồ họa (có thể có> 100GB RAM). Hệ điều hành của bạn cũng có thể sử dụng trao đổi theo một cách cụ thể để quản lý các chương trình yêu cầu nhiều bộ nhớ hơn. – bheklilr