Доброго времени суток. Вопрос у меня возник по поводу имплементации defvar в различных реализациях lisp: CLISP: [1]> (setq x 100) 100 [2]> (defun first0 (x) (second0 2)) FIRST0 [3]> (defun second0 (y) (list x y)) SECOND0 [4]> (first0 1) (100 2) [5]> (defvar x) X [6]> (first0 1) (1 2) Тут, собственно, претензий нет, все как и предполагается, в первом случае переменная x -- статическая. поэтому используется глобальное значение, во втором случае она стала динамической, и в качестве ее значения был использован фактический параметр функции first0. SBCL (варнинги поскипаны): * (setq x 100) 100 * (defun first0 (x) (second0 2)) FIRST0 * (defun second0 (y) (list x y)) SECOND0 * (first0 1) (100 2) * (defvar x) X * (first0 1) (100 2) Напрашивается резонный вопрос: почему переменная `х' не стала динамической?
Ответ на:
комментарий
от stassats
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от stassats
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от stassats
Ответ на:
комментарий
от anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Альтернативный swank (2012)
- Форум вопросы по стилю (2017)
- Форум Closure в ELisp (XEmacs!) не работает :( (2005)
- Форум Парадокс LISP'а (2007)
- Форум CL: привязки (2010)
- Форум elisp: множество опций (2011)
- Форум scheme выбор имплементации (2007)
- Форум Имплементация Scheme r5rs макросов (2017)
- Форум Имплементация lcs на pandas (2018)
- Форум Имплементация А* на С (2018)