函数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)