摘要: reduce用来把一个序列压缩成一个值。它接受至少两个参数,一个函数与一个序列。这函数必须是一个接受两个参数的函数。在最简单的情况下,函数起初用前两个元素作为参数来调用,之后接续的元素作为下次调用的第二个参数,上次返回的值作为下次调用的第一个参数。最后调用所返回的值作为reduce函数的返回值。也就是说像这样的表达式: (reduce #’fn ‘(a b c d)) 等同于:(fn (fn ... 阅读全文
posted @ 2012-12-21 16:59 flowjacky 阅读(463) 评论(0) 推荐(0)
摘要: mapcar:接受一个函数以及一个或多个列表,并返回把函数应用至每个列表的元素的结果,知道有的列表没有元素为止,结果为各次执行的返回值的汇总列表: CL-USER> (mapcar #'(lambda (x) (+ x 10)) '(1 2 3))(11 12 13)CL-USER> (mapcar #'+ '(1 2 3) '(5 6 7 8))(6 8 10) maplist:同mapcar... 阅读全文
posted @ 2012-12-21 15:32 flowjacky 阅读(1009) 评论(0) 推荐(0)
摘要: 它接受一个函数和一个参数列表,并返回把传入函数应用在传入参数的结果:CL-USER> (apply #'+ '(1 2 3))6CL-USER> (+ 1 2 3)6CL-USER> (funcall #'+ 1 2 3 4)10CL-USER> (apply #'+ '(1 2 3 4))10 阅读全文
posted @ 2012-12-21 15:00 flowjacky 阅读(178) 评论(0) 推荐(0)
摘要: 我的理解:在一个函数或者某个语句块中可以定义或返回另一个函数,这个函数会依赖于包括它的函数或语句的某些变量,这个变量的传递就叫做闭包。正规定义:当函数引用到外部定义的变量时,这外部定义的变量称为自由变量(free variable)。函数引用到自由的词法变量时,称之为闭包(closure)。CL-USER> (defun add-to-list (num lst) (mapcar #'(lambda (x) (+ x num)) lst))ADD-TO-LISTCL-USER> (add-to-list 5 '(1 2 3))(6 7 8)CL-USER> ( 阅读全文
posted @ 2012-12-21 10:56 flowjacky 阅读(147) 评论(0) 推荐(0)