【发布时间】:2016-08-30 13:32:20
【问题描述】:
我正在将一些 Scheme 代码转换为 Common Lisp。我不知道方案。我懂一点 Common Lisp。
首先,Scheme 代码定义了一个变量(或者是一个常量?),其值为函数的名称:
(define alert-propagator alert-propagators)
函数如下:
(define (alert-propagators propagators)
...)
然后通过引用常量间接调用该函数:
(alert-propagator arg)
这很漂亮。
我想知道这在 Common Lisp 中是否也可以实现?这是我尝试过的:首先,我定义了一个常量并将其绑定到一个函数:
(defconstant alert-propagator #'alert-propagators)
然后我定义了函数:
(defun alert-propagators (propagators)
...)
很好。
但是现在,为了间接调用函数(通过常量),我必须使用 funcall:
(funcall alert-propagator arg)
我认为这违背了定义常量(抽象)的整个目的。我真正想要的是能够简单地写:
(alert-propagator arg)
有没有办法在 Common Lisp 中实现这一点?
【问题讨论】:
标签: scheme