Доброго времени суток.
Вопрос у меня возник по поводу имплементации 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
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Парадокс LISP'а (2007)
- Форум scheme выбор имплементации (2007)
- Форум Имплементация Scheme r5rs макросов (2017)
- Форум Имплементация lcs на pandas (2018)
- Форум Имплементация А* на С (2018)
- Форум сигнальная обработка, фильтры. имплементация (2005)
- Форум Хорошая имплементация структуры данных Rope (2017)
- Форум [lisp sbcl] Ругается на defvar. Нид хелп. (2009)
- Форум wayland server имплементация, создание глобальных объектов (2021)
- Форум Стандартная имплементация потокобезопасной очереди в GCC (2012)