Я чувствую твою боль. Моя самая большая PITA в моем повседневном программировании имеет дело с этими! @ # $% ^ & (Пробелы в космосе.
Однако, если это поможет, со временем вы узнаете (трудный путь) о том, как с этим справиться, и это действительно улучшится. Но я все еще жду, когда Энди Джилл выйдет со своим волшебным профайлером космической утечки, чтобы решить все мои проблемы. (Я передаю ему свой комментарий от последнего ICFP, что он придумал эту классную идею как обещание реализовать ее.)
Я не буду пытаться убедить вас, что ленивая оценка - лучшая вещь в мире, но в этом есть определенные плюсы. У меня есть несколько программ потоковой обработки, которые отбрасывают ленивые списки с помощью любых разнообразных комбинаторов, которые успешно работают с гигабайтами данных, используя не более 3,5 МБ памяти (из которых более 2 МБ - время выполнения GHC). И кто-то умнее, чем я, сказал мне в прошлом году, что вы, как типичный программист на Haskell, действительно удивитесь тому, насколько сильно вы зависите от ленивых вычислений.
Но что нам действительно нужно, так это действительно хорошая книга о ленивой оценке в реальном мире (которая на самом деле ничем не отличается от академического мира, за исключением того, что они просто не публикуют статью, а мы получаем клиентов за нами с ножами), который должным образом охватит большинство вопросов, связанных с этим, и, что более важно, даст нам интуитивное понимание того, что может взорвать нашу кучу, а что нет.
Я не думаю, что это что-то новое; Я уверен, что другие языки и архитектуры тоже прошли через это. Как первые программисты имели дело с аппаратными стеками и всем этим, в конце концов? Бьюсь об заклад, не очень хорошо.