Меня именно этот вопрос волнует - можно ли средствами классического лямбда-исчислении промоделировать языки программирования с динамическим связыванием и ленивой стратегией вычисления.
Хороший вопрос, меня он тоже заинтересовал, поэтому хорошо было б, если кто-нибудь знающий, например, ЗУ просветил это.
Не часто. Но вот возникла потребность, и хочу с этим разобраться (в чем суть динамического связывания, в чем его вред/польза, совместимо ли оно со статическим и проч. Это легче всего было бы понять на примере лямбда исчисления.)
Значит, приходилось? Вот один мой знакомый спросил, о чём вообще речь идёт в этой теме, и мне было сложно ему объяснить на примере зачем вообще нужно динамическое связывание. Оно лишь тем отличается от статического, что допускает связывание переменных во время редукции (
-редукции в первую очередь). Сразу возникает проблема с
-конверсией. И сходу вопрос: пусть Вы хотите редуцировать
до
так, что
свяжется абстрактором, где
и
— обычные (или необычные, всё-таки о гипотетической ситуацией говорим)
-термы с явным вхождением
и
, то почему бы Вам не записать это выражение в виде
? Всё-таки терм мы формируем на основании наших потребностей, мыслей, и вопрос лишь в том, будет ли первая форма более понятна человеку, чем вторая.
Я так понимаю, это уже расширение лямбда-исчисления? А с исходным, все-таки, как - можно промоделировать динамическое связывание или нет?
Я долго думал и пришел к выводу, что известные мне системы не позволяют делать динамическое связывание.
Также мне кажется, что основная причина состоит в том, что строимые теории базируются на
-инвариантности, что не допускается при динамическом связывании.
Как мне кажется (в очередной раз подчёркиваю в совершенной неуверенности высказываемых утверждений), для того, чтобы ввести динамическое связывание, нужно пересмотреть основу да так, чтоб не было
-конверсии. Например, ввести упомянутое понятие контекста.
Другой путь заключается в том, чтобы не фиксировать
как конверсию, но возвести в статус редукции, т.е.
-собственное бинарное отношение. Тогда можно саму
-редукцию модифицировать или вовсе отменить. Полагаю, в такой модификации также можно достичь формализма динамического связывания.