LINUX.ORG.RU

История изменений

Исправление 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 компилятору (как оно в плюсах) — стратегия копирования может быть разной, её выбирает «клиент».