Функциональный апартеид
Jul. 2nd, 2012 01:18 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
http://udpn.livejournal.com/78084.html?style=mine
Обычно говорят, что нормальный порядок редукции нужен для того, чтобы bottom в аргументе не превращался в bottom в результате всегда, когда это возможно. Само по себе это никому не нужно. Дело именно в отложенном вычислении аргументов. Чтобы определить управляющие конструкции в языке с аппл. порядком редукции, нужно это делать явно, и их можно ввести только конечное число на этапе разработки языка. С нормальным порядком мы имеем возможность определять новые конструкции в любом количестве.
Всех, кто ничего не понял - отправить в индию и бангладеш, купаться в ганге и поклонятся коровам.
Обычно говорят, что нормальный порядок редукции нужен для того, чтобы bottom в аргументе не превращался в bottom в результате всегда, когда это возможно. Само по себе это никому не нужно. Дело именно в отложенном вычислении аргументов. Чтобы определить управляющие конструкции в языке с аппл. порядком редукции, нужно это делать явно, и их можно ввести только конечное число на этапе разработки языка. С нормальным порядком мы имеем возможность определять новые конструкции в любом количестве.
Всех, кто ничего не понял - отправить в индию и бангладеш, купаться в ганге и поклонятся коровам.
no subject
Date: 2012-07-02 10:28 am (UTC)no subject
Date: 2012-07-02 10:48 am (UTC)http://xoposhiy.livejournal.com/88565.html
Ключевой момент - возможность расширять/реализовывать некоторые конструкции, не меняя компилятор языка - без этого начинается всякий закат солнца вручную.
Впрочем, иногда бывает так, что вроде как бы и можно все делать, но выглядит это при реализации так, что лучше бы этого не было :)
no subject
Date: 2012-07-02 10:36 am (UTC)Я, честный труженик села
с полным ртомполными руками навоза, протестую!no subject
Date: 2012-07-02 07:07 pm (UTC)no subject
Date: 2012-07-02 11:11 am (UTC)no subject
Date: 2012-07-02 11:30 am (UTC)Я думаю, ребе М тут со мной согласен.
no subject
Date: 2012-07-02 11:13 am (UTC)no subject
Date: 2012-07-02 11:49 am (UTC)(no subject)
From:no subject
Date: 2012-07-02 01:48 pm (UTC)no subject
Date: 2012-07-02 11:18 am (UTC)no subject
Date: 2012-07-02 11:28 am (UTC)И в окамле подобное решается без лентяйки -- достаточно написать camlp4-расширение (или, с новым подходом, который уже в транке, но ещё не в релизе, всего лишь функцию на 20 строк, что ещё проще).
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-07-02 06:25 pm (UTC)no subject
Date: 2012-07-02 08:30 pm (UTC)Точнее, с помощью её разворачивания в комбинаторы. Чуть было не сделал, кстати, для одного варианта описания железа, где требовалось следить за количеством промежуточных проводов.
А далее можно и синтаксис с помощью квазиквотеров прикрутить, если надо усложнение работы.
Хотя я согласен, что DSL в Хаскеле слабоваты.
no subject
Date: 2012-07-02 11:23 am (UTC)И даже в современных языках, все эти проблемы решаются ad hoc.
Вроде как, имеешь опыт работы с ленивостью — должен сообразить.
А не сообразил, и ВНЕЗАПНО, где-то-там у тебя прорвало — сам виноват.
Рассуждения о ресурсной семантике (не без помощи линейной логики!) нормализации в ламбда-исчислении приводят к оптимальной редукции, о которой немало писал
no subject
Date: 2012-07-02 11:26 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-07-02 11:57 am (UTC)Под "оптимальностью" подразумевается минимальное количество вычислений согласно некоторому определению этого "количества"? Просто я не вижу причин уходить дальше редукции на графах, а они, судя по всему, есть (затраты памяти или на косвенность, не знаю).
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-07-02 11:25 am (UTC)no subject
Date: 2012-07-02 11:29 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-07-02 11:43 am (UTC)no subject
Date: 2012-07-02 12:01 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-07-02 11:45 am (UTC)no subject
Date: 2012-07-02 12:02 pm (UTC)(no subject)
From:no subject
Date: 2012-07-02 12:38 pm (UTC)no subject
Date: 2012-07-02 06:20 pm (UTC)no subject
Date: 2012-07-02 01:36 pm (UTC)в скале например можно создать неограниченное количество управляющих конструкций, несмотря на аппликативынй порядок редукции
no subject
Date: 2012-07-02 06:21 pm (UTC)(no subject)
From:(no subject)
From:no subject
Date: 2012-07-02 03:18 pm (UTC):) Прапануеце яго эксгуміраваць і павезці купацца ў Гангу?
no subject
Date: 2012-07-02 06:40 pm (UTC)no subject
Date: 2012-07-02 06:42 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-07-03 08:48 am (UTC)no subject
Date: 2012-07-03 05:47 pm (UTC)Поэтому, если язык представляет собой отображение на лямбду, то про редкуции и судят по лямбде или по graph-rewriting-системе.
Если подходить к вопросу с особенной выдумкой, то можно придумать исключение. Но вполне можно говорить, что трансляция в итоговую исполнительную машинку всегда происходит этапами.
Подобный вопрос вообще может иметь место довольно редко. Впрочем, даже и понятно, в каких случаях.
Что не так?
(no subject)
From:(no subject)
From: