我想知道如果可能的话,如何使自定义类可迭代,以便
SEQUENCE
函数和宏可以在其上工作。
类似的东西
(loop for x in instance-of-my-custom-class
do (print x))
(sort instance-of-my-custom-class #'<)
(aref instance-of-my-custom-class 3)
;; etc...
这在 Common Lisp 中可行吗?正常吗?
评论者已经给了我答案,所以我把它写在这里。该存储库的自述文件:https://github.com/Shimera/trivial-extensible-sequences详细解释了。
总而言之,根据我的需要创建新序列类型的能力并不是 Common Lisp 规范的一部分。然而,Common Lisp 的一些实现(例如 SBCL)支持这一点。请参阅https://www.sbcl.org/manual/index.html#Extensible-Sequences。上面链接的库为不支持可扩展序列协议的实现提供了后备。