Common Lisp中的apply和append

本文详细介绍了Lisp语言中append与apply两个函数的功能与用法。append用于合并多个列表,而apply则能对嵌套列表进行展开并应用指定函数。通过具体示例展示了它们在实际编程中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

append

Lisp中的append就是把多个list合并成一个list。如:

> (append '(a) '(b) '(c d))
(A B C D)

注意:

1.append后的每一个cell都必须是list,下面这个语句则会报错

> (append 'a 'b)
bad syntax for array: APPEND

2.同时,append不是嵌套的,如:

> (append '((a b) (c d)) '(e))
((A B) (C D) E)


apply

前面提到append不能对嵌套的执行合并,如:

> append '((a b) (c d))
((A B) (C D))

这个时候,可以使用apply

> (apply #'append '((a b) (c d)))
(A B C D)

apply后紧跟的是一个函数,上面的例子中即为append。apply将append后面的list中的整个list中的每个元素作为append的参数。上面的例子就等价于:

> (append '(a b) '(c d))

当apply紧跟的函数后面多于一个cell时,等价于:

> (append function 'p1 'p2 'p3) == (append function (list* 'p1 'p2 'p3))


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值