level 1
(defun foo (n)
(lambda (i) (incf n i)))
看到很多说这个例子,但是怎么调用,刚接触lisp请大家不吝赐教
2013年04月01日 05点04分
1
level 9
貌似返回了一个函数。是这样吧。。。好久没复习,都忘了
2013年04月02日 01点04分
3
level 7
首先,你的函数写法有误,应该是:
(defun foo (n)
#'(lambda (i) (incf n i)))
该函数是一闭包结构,使用时应该是这样的:
(setf addn (foo 3))
此时REPL提醒生成闭包addn,然后现在可以调用addn了,调用方式为:
1. (funcall addn 4)
2. (apply addn '(4))
结构返回7
函数的意思是对给定的值n,没调用一次递加i。
2013年05月10日 01点05分
4
楼主写法无误,这里不需要#'。
2013年05月10日 04点05分
回复 yjqww6 :恩,是的,匿名函数调用,
![[傻笑]](/static/emoticons/u50bbu7b11.png)
闭包看多了。
2013年05月10日 05点05分
回复 yjqww6 :加上也无妨
2013年05月11日 02点05分
回复 ljqican :当然
2013年05月12日 07点05分