Questions tagged «inductive-datatypes»


1
基于约束的代数数据类型推断
我正在研究一种基于表达的ML族谱语言,因此自然需要类型推断> :) 现在,我正在尝试基于EOPL(Friedman和Wand)中的简单实现,将基于约束的解决方案扩展到类型推断问题,但是它们优雅地避开了代数数据类型。 到目前为止,我的工作进展顺利;如果一个表达式e是a + b,e : Int,a : Int和b : Int。如果e是比赛, match n with | 0 -> 1 | n' -> n' * fac(n - 1)`, 我可以正确地推断t(e) = t(the whole match expression),t(n) = t(0) = t(n'),t(match) = t(1) = t(n' * fac(n - 1)等... 但是我不确定何时涉及代数数据类型。假设有一个类似filter的函数: let filter pred list …

1
什么是感应感应?
什么是感应感应? 我发现的资源是: 第5.7章末尾的HoTT书。 nLab的文章 一篇名为归纳-归纳定义的论文 该博客文章还提到了归纳-归纳类型 前两个参考资料对我来说太简短了,后两个参考文献太技术性了。有人能用外行的术语解释吗?如果有Agda代码,那就更好了。

2
如何得出依赖类型的消除符?
在依赖类型的编程中,有两种主要的方法来分解数据并执行递归: 相关模式匹配:函数定义作为多个子句给出。统一可确保所有遗漏的情况都是不可能的,并且外部求解器可确保有充分的递归依据。 消除符:每个归纳数据类型都有一个关联的常数E D,它充当归纳原理,并充当分解类型D的值的递归函数。它们比较冗长,但是具有总计(所有情况都由E D覆盖)并通过构造终止的优点。ddDËdËdE_DddDËdËdE_D 我已经看到了常见数据类型的消除器,例如,其中消除器基本上是数学归纳法,或者L i s t,其中消除器基本上是折叠。ñ一个牛逼ñ一个ŤNat大号我小号吨大号一世sŤList 我已经阅读了几篇有关依存模式匹配的论文,并且许多论文都引用了类型理论,在其中可以定义数据类型,并且该理论提供了消除符。例如,消除相关模式匹配描述了UTT如何基于消除符,以及在存在公理的情况下如何将模式匹配转换为消除。我的理解是,一旦定义了数据类型,该理论便提供了消除器。ķķK 我没有发现(或者至少没有发现,如果我没看过的话)很好地描述了如何导出消除符,包括其类型和语义。 有人可以指出我的引用,该引用描述了如何从数据类型的定义中获得消除符吗?

2
严格的积极性
来自这个参考文献:严格的积极性 严格的阳性条件排除了诸如 data Bad : Set where bad : (Bad → Bad) → Bad A B C -- A is in a negative position, B and C are OK 为什么A是负数?又为什么允许B?我了解为什么允许使用C。

1
自类型是否会使归纳构造的微积分过时?
自我类型是构造微积分[1]的扩展,允许语言表达通过Scott编码编码的代数数据类型。Scott编码提供了一种模式匹配功能O(1),这是在CC中包含归纳定义的主要动机之一。然而,“自我类型”却使基础理论变得更加简单和优雅,并且似乎同样强大。 从理论的角度来看,自我类型会否使CIC过时,或者在某些方面CIC相对于Self Tyes是有利的? [1] http://staff.computing.dundee.ac.uk/pengfu/document/talks/mvd-2012.pdf

3
多态和归纳数据类型
我很好奇。我一直在OCaml中处理此数据类型: type 'a exptree = | Epsilon | Delta of 'a exptree * 'a exptree | Omicron of 'a | Iota of 'a exptree exptree 可以使用显式类型的递归函数(最近添加的功能)进行操作。例: let rec map : 'a 'b. ('a -> 'b) -> 'a exptree -> 'b exptree = fun f -> begin function | Epsilon -> …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.