gpt4 book ai didi

lisp - defparameter vs defun 用于传递函数

转载 作者:太空宇宙 更新时间:2023-11-03 18:37:53 25 4
gpt4 key购买 nike

所以我可以这样做:

(defparameter *some-function* ... ; 稍后返回 lambda

或者这个:

(defun some-function ...

无论是哪种,我都可以使用 funcall:

(funcall 'some-function ...或者(funcall *some-function* ...

使用 defun 版本我也可以这样做:

(一些函数...

我不能用 defparameter 函数做到这一点。

defparameter 提供了更简单的技术,用于稍后将 some-function 重新分配给不同的函数(或其他任何东西,包括非函数数据)。

但除了这两点之外,使用其中一个的其他考虑因素是什么?

最佳答案

这个问题的回答很奇怪,因为我们有点将苹果与橙子进行比较。

对于正在查看此内容的 lisp 新手,defparameter 用于定义动态变量,而 defun 用于定义函数。

如果您担心在不使用 defun 的情况下能够以编程方式重新分配函数,请查看以下内容:

CL-USER> (defun jam () (print 'some-jam))
JAM

CL-USER> (jam)
SOME-JAM

CL-USER> (setf (symbol-function 'jam) (lambda () (print 'some-ham)))
#<FUNCTION (LAMBDA ()) {1004C033DB}>

CL-USER> (jam)
SOME-HAM

所以 defparameter 在重新分配函数时没有优势。另外,如果您想重新定义函数,可以查看 the compile command .

关于lisp - defparameter vs defun 用于传递函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19709228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com