【发布时间】:2009-04-02 11:59:56
【问题描述】:
我刚刚开始学习 Common Lisp——并且很快就爱上了它——而且我刚刚开始使用类型系统。我似乎特别喜欢应用程序编程。
据我了解,在 CL 中,字符串和列表都是序列,但似乎没有任何标准函数用于映射序列,只有列表。我可以看到为什么要为列表提供它们,它们是基本数据类型等等,但是为什么它不是为使用序列而设计的呢?由于它们是一种更通用的类型,因此将应用函数作为目标而不是列表似乎更有用。还是我完全误解了它的工作原理?
编辑:
我感到特别困惑的是,序列(抽象)和列表(实现)似乎在 CL 中被混淆了。共识似乎是这是出于历史原因; lisp 已经存在了很长时间,以至于您几乎可以通过它的函数和宏来规划软件工程实践的发展;乍一看,哪些函数适用于序列,哪些适用于列表似乎是任意的,因为 CL 混合了仅在列表上运行的预序列抽象函数,以及在序列上以更一般的方式执行相同操作的函数。作为目前刚刚学习 CL 的人,我认为如果作者首先引入序列作为更清晰的抽象,然后购买列表作为该抽象的最基本实现,那将会很有用。当然,列表仍然需要作为语法,但是当有必要明确说明这一点时,许多读者会自己解决这个问题,这在开始时会大大提升自我。
【问题讨论】:
标签: common-lisp