LINUX.ORG.RU

Динамическое vs лексическое связывание.

 ,


0

4

Принято считать, что динамическое связывание отличается от лексического правилами подстановки свободных переменных. Во всяком случае, много где об этом пишут. Однако, ИМХО, это не совсем так, а может быть и совсем не так. Давайте проанализируем выражение, полагая, что у нас динамическое связывание:

(define (inner y) (+ x y))
(define (outer x) (inner 1))
(print (outer 2)) ; 3
Если мы раскроем последнее выражение, у нас получится:
(print ((lambda(x) ((lambda(y) (+ x y)) 1)) 2)) ; 3
Как видно, последнее выражение не нарушает никаких правил подстановки, принятом в лямбда исчислении.

На самом деле, похоже, при любом связывании, правила подстановок действуют те же самые. Разница тот в другом. При динамическом байндинге, мы сначала, условно говоря, генерируем выражение, а затем исполняем, а при лексическом, сразу пишем выражение, минуя процесс разворачивания кода. То есть, лексическое связывание — это просто более примитивный подход, правила подстановки тут не причем.



Последнее исправление: terminator-101 (всего исправлений: 2)

Шли годы, а шизофреник так и не мог понять, что такое лямбда-исчисление, свободные переменные и оператор переименования.

anonymous
()
Ответ на: комментарий от anonymous

В гугле, по запросу «лямбда исчисление оператор переименования» единственный результат по совпадению «оператор переименования» — это страница на которой мы находимся. LOL. Сам придумал?

anonymous
()

да вы батенька из какой палаты? xD при лексической подстановке обязательно разрулить пересечения имён, иначе ничего не будет. плюс т.к. у нас есть система типов, то любая запись должна успешно валидироваться против этой системы типов

stevejobs ★★★★☆
()
Ответ на: комментарий от anonymous

я так и думал, что по поводу остальных пунктов возражений не будет :)

stevejobs ★★★★☆
()

мы сначала, условно говоря, генерируем выражение, а затем исполняем

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

x4DA ★★★★★
()
Ответ на: комментарий от anonymous

Ну ты и говно. Какое тупое говно будет гуглить на говнорусском недоязычке? Погугли «lambda calculus substitution», много нового узнаешь.

anonymous
()
Ответ на: комментарий от stevejobs

при лексической подстановке обязательно разрулить пересечения имён

при динамической тоже

плюс т.к. у нас есть система типов

у нас - это у кого?

x4DA ★★★★★
()
Ответ на: комментарий от x4DA

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

у нас - это у кого?

^^^ это в соседнюю палату. А у нас имена и их объекты связаны, и связи эти неприкосновенны, а кто до них прикоснется, тому банку сгущенки в зад.

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

Вот вроде бы взрослый мужчина. На лоре четыре звезды имеешь. А до сих пор путаешь слабую типизацию с динамической. Фу таким быть.

ugoday ★★★★★
()
Ответ на: комментарий от anonymous

оператор «[x/y] T» (где T - лямбда-терм) - это и есть substitution. Когда x и y переменные - то это частный случай, переименование. Учи TRS, лошара.

anonymous
()
Ответ на: комментарий от Virtuos86

Скала без всяких сомнений сильно повлияла на область непонимания, однако основное поражение высшей нервной деятельности всё же скорее связано именно с жабой.

aedeph_ ★★
()
Ответ на: комментарий от LongLiveUbuntu

Я за пожизненный бан по подсети.

Поддерживаю. Это же надо с таким упорством повторять, что земля плоская!

komputikisto
()

Это именно правила подстановки. Почитай, как делается бета-редукция. Не так, как ты думаешь.

Miguel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.