首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Common-Lisp递归类型说明符

Common-Lisp递归类型说明符
EN

Stack Overflow用户
提问于 2018-07-12 00:33:14
回答 1查看 130关注 0票数 1

因此,我想为list编写一个类型说明符,它允许指定列表元素的类型。类似于:

代码语言:javascript
复制
(deftype list-of (v) (cons ,v (or null (list-of ,v))))

当然,这是行不通的,因为我们都知道,递归类型是不受支持的。当然,人们可以映射类似于"satisfies“的东西(正如这里提到的:Is it possible to define a recursive type in Common Lisp?),但这否定了适用于语言分析和离线代码分析的干净递归定义的优势。(例如,证明代码是正确的,或者在语言之间进行翻译)。

有什么建议吗?这似乎是一个缺少的标准,除非我遗漏了一些明显的东西,因为我们通常使用列表来表示集合-为什么不用一种简单的方法来声明集合元素的类型呢?

EN

回答 1

Stack Overflow用户

发布于 2018-07-12 00:55:26

抱歉,这是不允许的。DEFTYPE规范说:

作为扩展返回的类型说明符的

递归扩展必须终止,包括嵌套在扩展中的类型说明符的扩展。

这种语言是标准化过程中清理问题的结果。在某些情况下,实现可以允许将递归类型定义作为扩展,但您不能依赖于它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51290394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档