Нетерпеливый против ленивого Хаскелла. Возможны бесконечные списки в языках Eager?

По-видимому, можно реализовать Haskell таким образом, чтобы он выполнял оценку без всякого изменения семантики языка. Если это правда, то как обрабатываются бесконечные структуры данных?

http://csg.csail.mit.edu/pubs/haskell.html

Поэтому много времени тратится на создание и уничтожение приостановленных частей вычисление (thunks). Слишком часто эти вычисления достаточно просты, чтобы их было так же легко оценить. Факсен и другие использовали статический анализ, чтобы выявить такие возможности для рвения. Вместо этого мы предлагаем везде использовать рвение, используя механизмы, которые позволяют нам выздороветь, если наша программа слишком рвется.

Ключевым моментом здесь является то, что «у нас есть механизмы восстановления, если наша программа слишком активна». Что это за механизм? Как они допускают бесконечные структуры данных и другие аспекты ленивых вычислений, которые, как мне кажется, невозможны на нетерпеливом языке?

5
задан TheIronKnuckle 30 December 2011 в 04:27
поделиться