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

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

Date: 2012-07-02 10:28 am (UTC)
From: [identity profile] falcrum.livejournal.com
Хм-м, все, кто не пользуют функциональное программирование - индусы? Однако... :)

Date: 2012-07-02 10:48 am (UTC)
From: [identity profile] metaclass.livejournal.com
Использовать не обязательно, но представлять разницу полезно.
http://xoposhiy.livejournal.com/88565.html

Ключевой момент - возможность расширять/реализовывать некоторые конструкции, не меняя компилятор языка - без этого начинается всякий закат солнца вручную.

Впрочем, иногда бывает так, что вроде как бы и можно все делать, но выглядит это при реализации так, что лучше бы этого не было :)

Date: 2012-07-02 10:36 am (UTC)
From: [identity profile] nicka-startcev.livejournal.com
это фашизм!
Я, честный труженик села с полным ртом полными руками навоза, протестую!

Date: 2012-07-02 07:07 pm (UTC)

Date: 2012-07-02 11:11 am (UTC)
From: [identity profile] molnij.livejournal.com
Вы бы хоть уточняли что людей определенной профессии, а то многие могут посмотреть с недоумением

Date: 2012-07-02 11:30 am (UTC)
From: [identity profile] nivanych.livejournal.com
Дворники, например.
Я думаю, ребе М тут со мной согласен.

Date: 2012-07-02 11:13 am (UTC)
From: [identity profile] si14.livejournal.com
Спорно. Не во всех функциональных языках нормальный порядок редукции (скорее даже в большинстве аппликативный). Scala, Clojure, Erlang, Ocaml — не функциональные языки?

Date: 2012-07-02 11:49 am (UTC)
From: [identity profile] udpn.livejournal.com
Вот, суть уже пробивается.

(no subject)

From: [identity profile] si14.livejournal.com - Date: 2012-07-02 11:51 am (UTC) - Expand

Date: 2012-07-02 01:48 pm (UTC)
From: [identity profile] nivanych.livejournal.com
Есличо, в посте говорится не про то, какие ленивые языки безусловно хорошие, а что если кто не понимает, что там написано, то...

Date: 2012-07-02 11:18 am (UTC)
From: [identity profile] justy-tylor.livejournal.com
Ой, какая древняя зефировщина... :) Управляющие конструкции при ленивости вводятся лишь до определённого предела. Очередной комбинатор !@!@#$% - легко. Что-то уровня do notation - никак. Но, как гласят легенды, истинному программисту на Хаскеле и не должно хотеться лучшего.

Date: 2012-07-02 11:28 am (UTC)
From: [identity profile] gds.livejournal.com
+1. А вот в Coq, где синтаксис расширяется отнюдь не через подобные функции, а через более правильный механизм Notations, вполне делается do-нотация.
И в окамле подобное решается без лентяйки -- достаточно написать camlp4-расширение (или, с новым подходом, который уже в транке, но ещё не в релизе, всего лишь функцию на 20 строк, что ещё проще).

(no subject)

From: [identity profile] udpn.livejournal.com - Date: 2012-07-02 11:53 am (UTC) - Expand

(no subject)

From: [identity profile] gds.livejournal.com - Date: 2012-07-02 12:13 pm (UTC) - Expand

(no subject)

From: [identity profile] udpn.livejournal.com - Date: 2012-07-02 09:04 pm (UTC) - Expand

(no subject)

From: [identity profile] gds.livejournal.com - Date: 2012-07-03 01:36 am (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2012-07-02 12:32 pm (UTC) - Expand

Date: 2012-07-02 06:25 pm (UTC)
From: [identity profile] nivanych.livejournal.com
Кстатее, от себя добавлю, что и в агдочке тоже.

Date: 2012-07-02 08:30 pm (UTC)
From: [identity profile] thesz.livejournal.com
Уровень do-нотации делается с помощью... do-нотации!

Точнее, с помощью её разворачивания в комбинаторы. Чуть было не сделал, кстати, для одного варианта описания железа, где требовалось следить за количеством промежуточных проводов.

А далее можно и синтаксис с помощью квазиквотеров прикрутить, если надо усложнение работы.

Хотя я согласен, что DSL в Хаскеле слабоваты.

Date: 2012-07-02 11:23 am (UTC)
From: [identity profile] nivanych.livejournal.com
С ленивостью одна большая проблема — это полный пофигизм по отношению к ресурсной семантике.
И даже в современных языках, все эти проблемы решаются ad hoc.
Вроде как, имеешь опыт работы с ленивостью — должен сообразить.
А не сообразил, и ВНЕЗАПНО, где-то-там у тебя прорвало — сам виноват.
Рассуждения о ресурсной семантике (не без помощи линейной логики!) нормализации в ламбда-исчислении приводят к оптимальной редукции, о которой немало писал [livejournal.com profile] codedot. Хоть он всё делает для бестиповой лямбды, но и такое изучить небесполезно.

Date: 2012-07-02 11:26 am (UTC)
From: [identity profile] metaclass.livejournal.com
Хм, оптимальный порядок редукции это интересно. Это ж будет "странная" комбинация аппликативного и нормального, которую мы сейчас обычно закатываем солнцем вручную.

(no subject)

From: [identity profile] nivanych.livejournal.com - Date: 2012-07-02 11:39 am (UTC) - Expand

(no subject)

From: [identity profile] nponeccop.livejournal.com - Date: 2012-07-02 02:19 pm (UTC) - Expand

(no subject)

From: [identity profile] nivanych.livejournal.com - Date: 2012-07-02 06:11 pm (UTC) - Expand

Date: 2012-07-02 11:57 am (UTC)
From: [identity profile] udpn.livejournal.com
Кстати да, всегда интересно было, о чём пишет codedot, но пишет он очень сложно.

Под "оптимальностью" подразумевается минимальное количество вычислений согласно некоторому определению этого "количества"? Просто я не вижу причин уходить дальше редукции на графах, а они, судя по всему, есть (затраты памяти или на косвенность, не знаю).

(no subject)

From: [identity profile] nivanych.livejournal.com - Date: 2012-07-02 01:36 pm (UTC) - Expand

(no subject)

From: [identity profile] nponeccop.livejournal.com - Date: 2012-07-02 02:21 pm (UTC) - Expand

(no subject)

From: [identity profile] nivanych.livejournal.com - Date: 2012-07-02 06:13 pm (UTC) - Expand

(no subject)

From: [identity profile] udpn.livejournal.com - Date: 2012-07-02 09:09 pm (UTC) - Expand

(no subject)

From: [identity profile] nponeccop.livejournal.com - Date: 2012-07-03 11:49 am (UTC) - Expand

Date: 2012-07-02 11:25 am (UTC)
From: [identity profile] aamonster.livejournal.com
А что, это не одно и то же?

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

(no subject)

From: [identity profile] aamonster.livejournal.com - Date: 2012-07-02 11:49 am (UTC) - Expand

(no subject)

From: [identity profile] nivanych.livejournal.com - Date: 2012-07-02 01:38 pm (UTC) - Expand

(no subject)

From: [identity profile] aamonster.livejournal.com - Date: 2012-07-02 04:08 pm (UTC) - Expand

(no subject)

From: [identity profile] nivanych.livejournal.com - Date: 2012-07-02 06:02 pm (UTC) - Expand

Date: 2012-07-02 11:43 am (UTC)
From: [identity profile] jakobz.livejournal.com
Обычно говорят что нормальный порядок нужен для <общее определение>, но на деле оно для <частный случай>

Date: 2012-07-02 12:01 pm (UTC)
From: [identity profile] udpn.livejournal.com
Неправда. Вот я могу зависимыми типами и проверкой тотальности вообще убрать bottom из языка. В чём тогда будет разница между нормальным и аппликативным порядками? А она будет. В одном случае аргументы if_then_else_ будут вычисляться все, а в другом — только нужные. Если не ошибаюсь, это называется как раз "операционной семантикой."

(no subject)

From: [identity profile] jakobz.livejournal.com - Date: 2012-07-02 12:27 pm (UTC) - Expand

(no subject)

From: [identity profile] gds.livejournal.com - Date: 2012-07-02 12:31 pm (UTC) - Expand

(no subject)

From: [identity profile] nponeccop.livejournal.com - Date: 2012-07-02 02:23 pm (UTC) - Expand

(no subject)

From: [identity profile] jakobz.livejournal.com - Date: 2012-07-02 02:41 pm (UTC) - Expand

(no subject)

From: [identity profile] nponeccop.livejournal.com - Date: 2012-07-02 02:57 pm (UTC) - Expand

(no subject)

From: [identity profile] nivanych.livejournal.com - Date: 2012-07-02 06:18 pm (UTC) - Expand

(no subject)

From: [identity profile] akuklev.livejournal.com - Date: 2012-07-02 07:41 pm (UTC) - Expand

(no subject)

From: [identity profile] jakobz.livejournal.com - Date: 2012-07-03 12:17 am (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2012-07-02 12:35 pm (UTC) - Expand

(no subject)

From: [identity profile] nivanych.livejournal.com - Date: 2012-07-02 01:39 pm (UTC) - Expand

(no subject)

From: [identity profile] udpn.livejournal.com - Date: 2012-07-02 09:31 pm (UTC) - Expand

(no subject)

From: [identity profile] nivanych.livejournal.com - Date: 2012-07-03 08:39 am (UTC) - Expand

(no subject)

From: [identity profile] udpn.livejournal.com - Date: 2012-07-03 09:30 am (UTC) - Expand

(no subject)

From: [identity profile] nivanych.livejournal.com - Date: 2012-07-03 05:40 pm (UTC) - Expand

Date: 2012-07-02 11:45 am (UTC)
From: [identity profile] jakobz.livejournal.com
Это, кстати, в SICP разбирается в первой главе, в примере где типа "Маша-дурняша хочет захуярить if, почему она соснет".

(no subject)

From: [identity profile] jakobz.livejournal.com - Date: 2012-07-02 12:04 pm (UTC) - Expand

Date: 2012-07-02 12:38 pm (UTC)
From: [identity profile] tzirechnoy.livejournal.com
Я, как человек привыкшый к тиклю и лиспу, подозреваю, что коровники плачут всё-таки по кому-то другому.

Date: 2012-07-02 06:20 pm (UTC)
From: [identity profile] nivanych.livejournal.com
Они уже выплакали свои слёзы!

Date: 2012-07-02 01:36 pm (UTC)
From: [identity profile] m e (from livejournal.com)
хорошо, а куда отправлять тех, кто высказывание понял, но не понял, что оно неверно?

в скале например можно создать неограниченное количество управляющих конструкций, несмотря на аппликативынй порядок редукции

Date: 2012-07-02 06:21 pm (UTC)
From: [identity profile] nivanych.livejournal.com
А это уже логика второго порядка, это нечестно!

(no subject)

From: [identity profile] m e - Date: 2012-07-03 08:30 am (UTC) - Expand

(no subject)

From: [identity profile] nivanych.livejournal.com - Date: 2012-07-03 08:31 am (UTC) - Expand

Date: 2012-07-02 03:18 pm (UTC)
From: [identity profile] measles.livejournal.com
Калі не можаш простымі словамі растлумачыць што ты робіш — не рабі гэта. © А. Эйнштэйн.

:) Прапануеце яго эксгуміраваць і павезці купацца ў Гангу?

Date: 2012-07-02 06:40 pm (UTC)
From: [identity profile] inhate.livejournal.com
а с не-программистами что делать будем?

Date: 2012-07-02 06:42 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Тестерш - в декреты!

(no subject)

From: [identity profile] antontsau.livejournal.com - Date: 2012-07-02 08:15 pm (UTC) - Expand

(no subject)

From: [identity profile] nivanych.livejournal.com - Date: 2012-07-03 08:38 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2012-07-03 08:53 am (UTC) - Expand

(no subject)

From: [identity profile] nivanych.livejournal.com - Date: 2012-07-03 10:00 am (UTC) - Expand

Date: 2012-07-03 08:48 am (UTC)
From: [identity profile] tzirechnoy.livejournal.com
Да, попробую расшыфровать своё возмущение: у меня есть сильное подозрение, что слова "язык с аппл. порядком редукции" не имеют не то что чёткого -- дажэ вменяемого определения, и применение термина "порядок редукцыи" по отношэнию к языкам можэт иметь смысл только после какого-то частного (одного из многих) отображэния языка (включая семантику) на лямбда-исчисление.

Date: 2012-07-03 05:47 pm (UTC)
From: [identity profile] nivanych.livejournal.com
"Evaluation" происходит в лямбде или в графе.
Поэтому, если язык представляет собой отображение на лямбду, то про редкуции и судят по лямбде или по graph-rewriting-системе.
Если подходить к вопросу с особенной выдумкой, то можно придумать исключение. Но вполне можно говорить, что трансляция в итоговую исполнительную машинку всегда происходит этапами.
Подобный вопрос вообще может иметь место довольно редко. Впрочем, даже и понятно, в каких случаях.
Что не так?

(no subject)

From: [identity profile] tzirechnoy.livejournal.com - Date: 2012-07-03 06:10 pm (UTC) - Expand

(no subject)

From: [identity profile] nivanych.livejournal.com - Date: 2012-07-04 04:29 am (UTC) - Expand

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 25th, 2025 01:29 am
Powered by Dreamwidth Studios