LINUX.ORG.RU

лексическая область видимости

 


1

3

Небольшая непонятка.

Когда мы говорим о лексической области видимости мы как-бы подразумеваем следующее: функция «запомнила» значения переменных из всей цепочки замыканий на момент определения. Когда она будет вызвана, она не будет видеть текущий контекст, а брать значения переменных из того контекста в котором была определена. Но что же происходит в следующем коде:


(define a 1)
(define tst (lambda() (write a)))
(define a 10)
(tst)

10
Почему функция берет значение а из контекста вызова а не определения? Мы имеем, по факту динамический биндинг?



Последнее исправление: anonimous (всего исправлений: 4)
Ответ на: комментарий от anonymous

Ты можешь хоть одно различие (кроме названий) привести в разнице реализаций ООП между плюсами и замыканиями?

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

Лол, он тебе сейчас скажет, что процедуры в ФОРТРАНе — это частный случай замыканий с вырожденным контекстом. А ещё они являются функторами, действующими на специальных категориях.

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

Нет, прцедуры - не замыкания, т.к. контекст в них не передается. В отличии от методов.

Почему это не передаётся? Передаётся, просто он вырожденный. Итого: процедура в ФОРТРАНе — частный случай замыкания.

А ФОРТРАН — частный случай ЛИСПа.

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