metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-07-02 01:18 pm

Функциональный апартеид

http://udpn.livejournal.com/78084.html?style=mine
Обычно говорят, что нормальный порядок редукции нужен для того, чтобы bottom в аргументе не превращался в bottom в результате всегда, когда это возможно. Само по себе это никому не нужно. Дело именно в отложенном вычислении аргументов. Чтобы определить управляющие конструкции в языке с аппл. порядком редукции, нужно это делать явно, и их можно ввести только конечное число на этапе разработки языка. С нормальным порядком мы имеем возможность определять новые конструкции в любом количестве.

Всех, кто ничего не понял - отправить в индию и бангладеш, купаться в ганге и поклонятся коровам.

[identity profile] nivanych.livejournal.com 2012-07-02 11:29 am (UTC)(link)
Что именно одно и тоже?...

[identity profile] aamonster.livejournal.com 2012-07-02 11:49 am (UTC)(link)
"чтобы bottom в аргументе не превращался в bottom в результате всегда, когда это возможно", "отложенное вычисление аргументов" и возможность "определить управляющие конструкции"?

Ну, если вдаваться в тонкости - то разное (например, в Форте нет ленивости - но новые управляющие конструкции определяются свободно), но в контексте ФП...

[identity profile] nivanych.livejournal.com 2012-07-02 01:38 pm (UTC)(link)
Не одно и то же, конечно.
Всё это следует из ленивости, но не наоборот — есть и другие нормализующие стратегии, отложенность можно делать и по-другому, ровно как и определять управляющие конструкции.

[identity profile] aamonster.livejournal.com 2012-07-02 04:08 pm (UTC)(link)
Ну да, но срабатывание всего этого "в лоб", из коробки - просто за счёт "вызова" функций...
(функция не наткнется на bottom в ненужных аргументах ~= функция не вычисляет свои аргументы раньше времени ~= можно сделать if просто функцией)
(конечно, для всех "~=" ещё куча условий, типа иммутабельности, карринга и т.п.)

[identity profile] nivanych.livejournal.com 2012-07-02 06:02 pm (UTC)(link)
Ну и форт, это всё-таки, метапрограммирование.