Алгоритмы, которые не заканчиваются на ленивом языке - PullRequest
26 голосов
/ 09 июля 2011

Согласно http://www.reddit.com/r/programming/comments/gwqa2/the_real_point_of_laziness/c1rslxk

Некоторые алгоритмы не заканчиваются на нетерпеливом языке, как на ленивом, и (для меня это шокирующий шок) наоборот.

Первый, конечно, хорошо известен, но последний кажется мне, если это правда, значительно более легким шоком.

Кто-нибудь знает алгоритм, который заканчивается на нетерпеливом языке, но не на ленивом?

Ответы [ 2 ]

11 голосов
/ 11 июля 2011

Википедия отвечает на этот вопрос для лямбда-исчисления: Стратегии сокращения лямбда-исчисления

Ключевые части:

Аппликативный порядок не является нормализующей стратегией. [...] Напротив, нормальный порядок называется так, потому что он всегда находит нормализующее сокращение, если оно существует.

Это показывает еще более сильное свойство ленивой оценки: если существует стратегия оценки, которая заставляет определенную программу завершаться, то программа также завершается ленивой оценкой. Так, в частности, строгая оценка (аппликативный порядок) не позволяет какой-либо программе завершать этот цикл при ленивой оценке.

Ссылки на странице википедии предоставляют доказательства.

3 голосов
/ 11 июля 2011

Я собираюсь выйти на конечность и заявить, что ни один алгоритм, который заканчивается в чисто функциональной нетерпеливой среде, не завершится в чисто функциональной ленивой среде.

В обсуждаемой статье это не упоминается, за комментарием следует запрос примера, который не соответствует. Поэтому, пока не будет найден пример, я скажу нет.

...