我刚开始学习Common Lisp - 并且很快就爱上了它 - 我刚刚进入了类型系统.我似乎对应用程序编程产生了特别的喜爱.
据我所知,在CL字符串和列表都是序列,但似乎没有任何标准函数用于映射序列,只有列表.我可以看到为什么它们会被提供给列表,它们是什么,它们是基本的数据类型和所有,但为什么它不是设计用于序列?由于它们是更通用的类型,因此将应用功能定位于它们而不是列表似乎更有用.或者我完全误解了它是如何工作的?
编辑:
我感到特别困惑的是序列 - 抽象 - 和列表 - 实现 - 的方式似乎在CL中混乱.共识似乎是出于历史原因; lisp已经存在很长时间了,你几乎可以通过它的函数和宏来规划软件工程实践的发展; 哪些函数适用于序列,哪些列表看起来似乎是任意的,因为CL具有仅在列表上运行的前序列抽象函数的混合,以及在序列上以更一般的方式执行相同操作的函数.作为刚刚学习CL的人,我认为如果作者首先将序列作为更清晰的抽象引入,然后在列表中购买作为该抽象的最基本实现,那将是有用的.当然,仍然需要列表作为语法,但是当有必要明确说明这一点时,许多读者会自己解决这个问题,这在开始时会非常自负.
为什么,有很多函数在序列上工作.使用MAP或MAP-INTO完成序列上的映射.
查看CLHS的序列部分以了解更多信息.
还有一个组织得很好的快速参考.