Один пример того, как лень вызывает странные проблемы (случилось со мной сегодня, в Хаскеле):
import System.IO
main = do
content <- readFile "foo.txt"
writeFile "foo.txt" content
При компиляции и выполнении выдается следующая ошибка:
foo.txt: openFile: resource busy (file is locked)
То, что я думал, это будет делать:
Откройте файл foo.txt, прочитайте содержимое, закройте его снова. Затем откройте его для записи, запишите содержимое и закройте снова.
Что он на самом деле сделал:
«Ах, какой-то контент. Я, вероятно, прочитаю его позже, когда он нам действительно понадобится». Затем откройте «foo.txt» для записи. Начните писать контент ... хорошо, теперь нам нужен контент. Откройте foo.txt для чтения - bam!
Я знаю, что это тривиально исправить, но трудно найти, если вы не знаете, где искать.