当前位置:编程学习 > 网站相关 >>

Common Lisp中的apply和append

append
Lisp中的append就是把多个list合并成一个list。如:
[plain]  
> (append '(a) '(b) '(c d))  
(A B C D)  
 
注意:
1.append后的每一个cell都必须是list,下面这个语句则会报错
[plain]  
> (append 'a 'b)  
bad syntax for array: APPEND  
2.同时,append不是嵌套的,如:
[plain]  
> (append '((a b) (c d)) '(e))  
((A B) (C D) E)  
 
 
apply
前面提到append不能对嵌套的执行合并,如:
[plain]  
> append '((a b) (c d))  
((A B) (C D))  
这个时候,可以使用apply
[plain]  
> (apply #'append '((a b) (c d)))  
(A B C D)  
apply后紧跟的是一个函数,上面的例子中即为append。apply将append后面的list中的整个list中的每个元素作为append的参数。上面的例子就等价于:
[plain]  
> (append '(a b) '(c d))  
当apply紧跟的函数后面多于一个cell时,等价于:
[plain]  
> (append function 'p1 'p2 'p3) == (append function (list* 'p1 'p2 'p3))  
 
补充:综合编程 , 其他综合 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,