有效地返回突变结构
returning mutated structures efficiently
我有一个结构:
(defstruct spider omegas values continuation)
并且我有接受这种结构的函数和return它的变异版本:
(defun dec (s)
(make-spider
:omegas (spider-omegas s)
:values (cons (- (car (spider-values s)) 1) (cdr (spider-values s)))
:continuation (cdr (spider-continuation s))))
我有一种预感,这会在内存中创建不需要存在的 spider
的新实例(google 没有帮助)。我关心的是我 returning 是它自己的内存块,但我不关心 spider
即参数 s
到我完成时功能。有没有更流畅的方法来 return 这样的结构?
如果您只想改变参数结构对象:
(defun dec (s)
(decf (first (spider-values s))) ; mutates the list of values
(pop (spider-continuation s))
s)
我有一个结构:
(defstruct spider omegas values continuation)
并且我有接受这种结构的函数和return它的变异版本:
(defun dec (s)
(make-spider
:omegas (spider-omegas s)
:values (cons (- (car (spider-values s)) 1) (cdr (spider-values s)))
:continuation (cdr (spider-continuation s))))
我有一种预感,这会在内存中创建不需要存在的 spider
的新实例(google 没有帮助)。我关心的是我 returning 是它自己的内存块,但我不关心 spider
即参数 s
到我完成时功能。有没有更流畅的方法来 return 这样的结构?
如果您只想改变参数结构对象:
(defun dec (s)
(decf (first (spider-values s))) ; mutates the list of values
(pop (spider-continuation s))
s)