Наиболее очевидное использование лени в повседневном языке - это оператор «if», в котором выполняется только одна ветвь условного оператора.
Противоположностью чисто нестрогого (ленивого) языка был бы чисто строгий язык.
Существует по крайней мере один случай, когда «чисто строгий» полезен, а именно предикация ветки.
Примерный пересказ связанной статьи:
Давным-давно в мире процессоров инструкции для выполнения загружались, когда проверялось условие перехода. В какой-то момент были добавлены конвейеры команд, чтобы сократить время загрузки. Обратной стороной было то, что ЦП не знал, какую ветвь нужно загрузить, поэтому по умолчанию загружал одну. Если бы ветвь пошла в обратном направлении, конвейер остановился бы, пока был загружен код для другой ветки.
Решение состоит в том, чтобы загрузить обе ветки, выполнить обе ветки, а затем результат условного выражения скажет вам, какой результат ветки сохранить, а какой выбросить. Тогда вы не получите остановок на трубопроводе.
Это мой любимый (единственный?) Пример преимущества чисто строгого языка.
person
shapr
schedule
11.05.2009