Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Common lisp 在公共lisp中命名为lambda_Common Lisp - Fatal编程技术网

Common lisp 在公共lisp中命名为lambda

Common lisp 在公共lisp中命名为lambda,common-lisp,Common Lisp,我需要编写一个递归助手函数,不需要给它全局范围,但我需要引用它来实现递归 Emacs lisp具有fset,它分配给符号的功能单元。common lisp中的等价物是什么?malisper说的话 或者,如果您确实需要一个命名的lambda: (defmacro named-lambda (name args &body body) `(labels ((,name ,args ,@body)) #',name)) 我刚发现这是一个很普通的白痴。来自亚历山大代码: (def

我需要编写一个递归助手函数,不需要给它全局范围,但我需要引用它来实现递归

Emacs lisp具有
fset
,它分配给符号的功能单元。common lisp中的等价物是什么?

malisper说的话

或者,如果您确实需要一个命名的lambda:

(defmacro named-lambda (name args &body body)
  `(labels ((,name ,args ,@body))
     #',name))

我刚发现这是一个很普通的白痴。来自亚历山大代码:

(defmacro named-lambda (name lambda-list &body body)
  "Expands into a lambda-expression within whose BODY NAME denotes the corresponding function."
  `(labels ((,name ,lambda-list ,@body))
 #',name))
以下是exmaple的用法:

(let ((! ;; Everything can be a symbol :D
   ;; Definition here
   (named-lambda self (n)
         (case n
           (1 1)
           (otherwise (* n
                 (self (1- n)))))))) ;; Recurse here
  ;; How to call it
  (funcall ! 6))

我可以给一个符号分配一个lambda函数,然后
(funcall)
这个符号,但必须有一个更漂亮的方法。看看标签:P.S.我只是想为Lars Brinkhoff的答案添加一个例子。