在 Common Lisp 中以 Scheme 风格定义函数,无需 defun
Defining functions Scheme-style in Common Lisp, without defun
在 Scheme 中,您可以定义类似
的函数
(define f (lambda (x) ...))
特别是,你可以这样做
(define f (g))
其中 g 是某个返回函数的函数。是否可以在 Common Lisp 中做同样的事情,即将函数符号与给定的匿名函数相关联?
没关系,我刚刚在 Paul Graham 的书 ANSI Common Lisp 中找到了答案(第二次看了之后;第 99 页):
(setf (symbol-function 'f) (lambda (x) (* x x)))
实现(对于大多数意图和目的)与
相同
(defun f (x) (* x x))
在 Scheme 中,您可以定义类似
的函数(define f (lambda (x) ...))
特别是,你可以这样做
(define f (g))
其中 g 是某个返回函数的函数。是否可以在 Common Lisp 中做同样的事情,即将函数符号与给定的匿名函数相关联?
没关系,我刚刚在 Paul Graham 的书 ANSI Common Lisp 中找到了答案(第二次看了之后;第 99 页):
(setf (symbol-function 'f) (lambda (x) (* x x)))
实现(对于大多数意图和目的)与
相同(defun f (x) (* x x))