列表

本文介绍了Lisp中的列表结构,包括点对概念、列表的约定形式及构造方法。讨论了函数式编程在Lisp中的应用,强调了副作用和破坏性操作,并提到了回收性操作作为优化手段。最后,文章探讨了列表处理的技巧,如first/car和rest/cdr,以及处理嵌套列表的方法。
摘要由CSDN通过智能技术生成

1:点对的概念

理解列表的话,先清楚所谓的点对单元如下图,其中a,b可以为任何对象。Cons 接受两个实参并且返回他们两个组成的点对单元。CAR是该列表的第一个元素,CDR则包含着其余元素。既然a,b可以为任何对象,如果串过去的是两个整数实参也就是如下(1.2)的点对形式,

但是这样的结构不能够再继续扩展。所以我们就引入了Lisp中的列表规则:后面的位置我们不直接存字面值了,改为地址,比如下一个点对的引用,所以当CDR为后续点对的链接或NIL时,Lisp打印器可以理解这种约定并能将这种链状的点对单元打印成括号列表而不用用点分隔的点对。

CL-USER> (cons 1 2)
(1 . 2)

2Lisp 中约定的列表形式

(1 2 3)这个列表实际上就是3点对单元链接组成,具体结构如下:


列表时通过将点对以链状连接在一起而构成的。如上图所示列表的元素被保存在点对的CAR中,对后续点对的链接则被保存在CDR,链上最后一个单元的CDRNIL

代码实现如下,正好符合lisp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值