函数reduce

reduce用来把一个序列压缩成一个值。它接受至少两个参数,一个函数与一个序列。这函数必须是一个接受两个参数的函数。在最简单的情况下,函数起初用前两个元素作为参数来调用,之后接续的元素作为下次调用的第二个参数,上次返回的值作为下次调用的第一个参数。最后调用所返回的值作为reduce函数的返回值。也就是说像这样的表达式:

(reduce #’fn ‘(a b c d))

等同于:(fn (fn (fn ‘a ‘b) ‘c) ‘d)

示例:

CL-USER> (reduce #'+ '(1 2 3 4))
10
CL-USER> (+ (+ (+ '1 '2) '3) '4)
10

 

CL-USER> (reduce #'intersection '((b r a d 's) (b a d) (c a t)))
(A)
CL-USER> (intersection (intersection '(b r a d 's) '(b a d)) '(c a t))
(A)

说明:intersection函数的作用就是取两个列表的交集并返回。

CL-USER> (intersection '(a b c) '(b b c))
(C B)

posted @ 2012-12-21 16:59  flowjacky  阅读(451)  评论(0编辑  收藏  举报