lisp初体验-Practical Common Lisp笔记-14.因为list,它被称为Lisp
上一章讲了向量、哈希表等比Lisp中较常用的数据结构。就如今的Common Lisp而言,的确选择很多,而过去却只有列表(list)这一个选项,so~
当然历史原因只是其一(话说能在历史中被选择的总有其合理之处),就当前通常可见的场景下,List也是一个不错的选择,其实用性早已被时间所证明(有点像数学啊,很多公理都早已被确定~)。所以,了解List,知道选择List的优劣还是很有必要的。
跳过一段"花非花"的论断,让我们直接进入叫做"cons cells"的东东(算是list的原型吧,无需深入,现在都用新的定义方式了):
我们用cons来定义、创建这个结构:
看起来就像这个样子:
原则上,如果需要,列表可以无限扩展任意深度。
关于列表,Lisp为其配套了一大堆功能性函数,在这儿就不一一阐述,取其典型:append
(这图不错啊~)
细心的人可能已经发现,似乎并非是一个全新的列表啊,被你发现了~(mapcar #'(lambda (x) (* 2 x)) (list 1 2 3)) ==> (2 4 6)(mapcar #'+ (list 1 2 3) (list 10 20 30)) ==> (11 22 33)
MAPLIST 对应cdr
MAPCAR/MAPLIST 生成新的list
MAPCAN/MAPCON 生成组合的list
MAPC/MAPL 结果覆盖第一个list
跳过了很多描述性和观点性的东西(有些是晦涩,有些是暂不认同),至于具体的函数,用到时看看help,文档应该很容易覆盖吧。
其实,就总体而言,只要coder有好的代码风格,做到数据传递不被破坏(或者是预期的破坏),一切就都是浮云了。
(未完待续)