Size: a a a

2020 December 19

AE

Alexey Egorov in Lisp Forever
Кепчур по значению в рантайме.
источник

A

Aragaer in Lisp Forever
ну вот я это и не очень понял
источник

AE

Alexey Egorov in Lisp Forever
Ну как (let ((*standard-output* ...
источник

A

Aragaer in Lisp Forever
то есть наверно это один из тех моментов, которые я не понимаю в коммонлиспе - я кроме как lexical scope ничего особо и не умею
источник

AE

Alexey Egorov in Lisp Forever
._.
источник

AE

Alexey Egorov in Lisp Forever
В общем когда динамический биндинг, то в зависимости от того, что было в окружении забиндено на момент вызова функции, в которой этот биндинг, то и будет значением.
источник

AE

Alexey Egorov in Lisp Forever
С лексическим — то, что было на момент компиляции.
источник

A

Aragaer in Lisp Forever
ну то есть если я напишу
(define *var* 1)

(defun f (print *var*))

(let ((*var* 2)) (f))

то напечатается 2
источник

A

Aragaer in Lisp Forever
а если не напрямую f, а там цепочка f -> g -> h -> print, то тоже?
источник

AE

Alexey Egorov in Lisp Forever
Не понял про цепочку.
источник

A

Aragaer in Lisp Forever
(defun f (g))
(defun g (h))
(defun h (print *var*))
источник

AE

Alexey Egorov in Lisp Forever
Aragaer
(defun f (g))
(defun g (h))
(defun h (print *var*))
Всё ещё не понял.
источник

A

Aragaer in Lisp Forever
ну видимо правильный ответ "да то же самое"
источник

AE

Alexey Egorov in Lisp Forever
Функции и имена переменных живут в разных неймспейсах.
источник

AE

Alexey Egorov in Lisp Forever
Поэтому вижу тут просто три разных функции.
источник

AE

Alexey Egorov in Lisp Forever
Не связанные никак.
источник

A

Aragaer in Lisp Forever
да, три разные функции, я это и имел в виду
источник

AE

Alexey Egorov in Lisp Forever
Aragaer
да, три разные функции, я это и имел в виду
Вряд ли.
источник

AE

Alexey Egorov in Lisp Forever
Потому что в этом нет смысла.
источник

A

Aragaer in Lisp Forever
мм.. в смысле "функция f это вызвать функцию g"
источник