【发布时间】:2010-11-18 00:16:02
【问题描述】:
另一个新手(常见)LISP 问题:
基本上,在大多数编程语言中,函数都有一个方法来接收对变量的引用而不仅仅是值,也就是说,通过引用传递而不是通过值传递。比方说,为了简单起见,我想写一个 LISP 函数,它接收一个变量并将该变量的值加一:
(defun increase-by-one (var)
(setf var (+ var 1)))
现在很明显的问题是这个函数只增加了堆栈上变量副本的值,而不是实际的原始变量。我也尝试过使用宏来实现效果,但没有成功,虽然我觉得使用宏是正确的方法。
我在 LISP 中一直碰壁,我确信一定有办法绕过它,或者我没有想过在 LISP 中有完全不同的方法来解决这个问题?这样的事情在 LISP 中是如何完成的?
编辑:多人建议使用incf。我只是用这个例子简单地演示了这个问题,我实际上并不是在寻找重新实现 incf。不过还是谢谢你的建议。
【问题讨论】:
-
您说的是“大多数编程语言”,但除了 C++ 和 Perl 之外,还有其他语言具有这种特性吗?
-
@LeCurious Pascal 是另一个
标签: lisp common-lisp