这个函数怎么调用
lisp吧
全部回复
仅看楼主
level 1
 (defun foo (n)
    (lambda (i) (incf n i)))
看到很多说这个例子,但是怎么调用,刚接触lisp请大家不吝赐教
2013年04月01日 05点04分 1
level 4
(funcall (foo 3) 2)
2013年04月01日 07点04分 2
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 :恩,是的,匿名函数调用,[傻笑]闭包看多了。
2013年05月10日 05点05分
回复 yjqww6 :加上也无妨
2013年05月11日 02点05分
回复 ljqican :当然
2013年05月12日 07点05分
1