Доброго времени суток.
Вопрос у меня возник по поводу имплементации 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)
- Форум Имплементация А* на С (2018)
- Форум Имплементация lcs на pandas (2018)