我已经搜索了互联网的答案,但没有太多的运气,所以请原谅我,如果这是一个重复的问题。我将陈述我的问题:=(?),然后在下面的代码中的注释中。 (我使用的是CLISP和煤泥的Emacs):(?)lisp概念和术语帮助需要
;; is this called nested function or partial application or what(?)
(defun create-function(a)
(defun add-function(x)(+ x a)))
->(create-function 8)
->ADD-FUNCTION
->(add-function 3)
->11
我可以看到链接这些“局部应用”的好处,但这不是讨好本身,右好,如果让我检查观察是正确的:
;; the 'let statement *binds* 'loc to the 'clos object with 10 being the argument
;; for the formal parameter x. when funcall is applied to 'loc with 20 for y, the
;; lambda expression substitutions are complete and 200 is returned(?).
(defun close(x)
(lambda(y)(* x y)))
->CLOSE
(let ((loc (close 10)))
(funcall loc 20))
->200
上面的代码是因为“在禄”让语句的范围封闭(?):如果“克洛斯是一个可变变量也只是改变值,而里面的'让声明(?)...我想。最后,如果有人能告诉我如何让step宏与上述功能搭配使用,那将会有很大帮助,(他们马上评估......)谢谢。
对不起,迟到的响应,硬件故障和生病的宠物让我非常忙碌。我对我所得到的回应有些困惑,所以我只用了最后一小时就解释了斯蒂尔先生和塞贝尔先生采取的具有约束力的形式和封闭。我现在对我的理解和术语感到更加自信。我稍后会写一个总体回应。 – macrolyte