Một ví dụ cho lazyness gây ra vấn đề lạ (xảy ra với tôi ngày hôm nay, trong Haskell):
import System.IO
main = do
content <- readFile "foo.txt"
writeFile "foo.txt" content
này ném các lỗi sau khi biên soạn & thực hiện:
foo.txt: openFile: resource busy (file is locked)
Những gì tôi nghĩ rằng nó sẽ làm: Mở tệp foo.txt, đọc nội dung, đóng lại. Sau đó mở nó để viết, viết nội dung và đóng lại.
Điều gì thực sự đã làm: "Ah, một số nội dung. Tôi có lẽ sẽ đọc sau khi chúng tôi thực sự cần nó." Sau đó mở "foo.txt" để viết. Bắt đầu viết nội dung ... ok, bây giờ chúng ta cần nội dung. Mở foo.txt để đọc - bam!
Tôi biết nó không đáng kể để khắc phục, nhưng thật khó để tìm ra nếu bạn không biết phải tìm đâu.
Đánh giá lười biếng là cách để đạt được hiệu suất. – Zorf
Không đúng. Nếu bạn phải đánh giá câu trả lời, thì chi phí phụ trội để đánh giá lười biếng tạo ra một chi phí không có lợi ích. – vy32
vy32 là chính xác. Ví dụ: nếu bạn có danh sách các đối tượng được hiển thị trong danh sách trên thiết bị di động thì chế độ xem sẽ được tạo tại thời điểm các mục danh sách xuất hiện trên màn hình. Nếu một số giá trị được hiển thị trong danh sách phải được tải chậm danh sách sẽ nói lắp và tụt hậu vì danh sách mới không thể được điền đủ nhanh. – Janusz