Подтвердить что ты не робот

Алгоритмы, которые не прерываются на ленивом языке

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ссылки на странице wikipedia содержат доказательства.

Ответ 2

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

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