По-видимому, можно реализовать Haskell так, чтобы он выполнял оценку без каких-либо изменений в семантике языка. Если это правда, как обрабатываются бесконечные структуры данных?
http://csg.csail.mit.edu/pubs/haskell.html
Поэтому много времени тратится на создание и уничтожение приостановленных фрагментов вычислений (преобразователей). Слишком часто эти вычисления настолько просты, что их было бы так же легко оценить. Факсен и другие использовали статический анализ, чтобы выявить такие возможности для рвения. Вместо этого мы предлагаем везде использовать рвение, одновременно используя механизмы, которые позволяют нам выздороветь, если наша программа слишком рьяна.
Ключевым моментом здесь является то, что «у нас есть механизмы восстановления, если наша программа слишком активна». Что это за механизм? Как они допускают бесконечное количество структур данных и другие аспекты ленивых вычислений, которые, как мне кажется, невозможны на нетерпеливом языке?