История изменений
Исправление quasimoto, (текущая версия) :
(defstruct btree l r)
(defun copy/btree (obj)
(if (typep obj 'btree)
(make-btree :l (copy/btree (btree-l obj)) :r (copy/btree (btree-r obj)))
obj))
не знаю чем тут поможет плюсовое f(obj).
А простая копия структуры в лиспе делается в месте вызова с помощью (f (copy-struct-name obj)) вместо декларации bitcopy в месте определения функции и перепоручения делать copy в месте вызова компилятору (как оно в плюсах) — стратегия копирования может быть разной (просто copy-btree или полное copy/btree, например), её выбирает «клиент».
Исправление quasimoto, :
(defstruct btree l r)
(defun copy/btree (obj)
(if (typep obj 'btree)
(make-btree :l (copy/btree (btree-l obj)) :r (copy/btree (btree-r obj)))
obj))
не знаю чем тут поможет плюсовое f(obj).
А простая копия структуры в лиспе делается в месте вызова с помощью (f (copy-struct-name obj)) вместо декларации bitcopy в месте определения функции и перепоручения делать copy в месте вызова компилятору (как оно в плюсах) — стратегия копирования может быть разной, её выбирает «клиент».
Исходная версия quasimoto, :
(defstruct btree l r)
(defun copy/btree (obj)
(if (typep obj 'btree)
(make-btree :l (copy/btree (btree-l obj)) :r (copy/btree (btree-r obj)))
obj))
не знаю чем тут поможет плюсовое f(obj).
А простая копия структуры в лиспе делается в месте вызова с помощью (f (copy-struct-name obj)) вместо декларации bitcopy в месте определения функции и перепоручения делать copy компилятору (как оно в плюсах) — стратегия копирования может быть разной, её выбирает «клиент».