Questions tagged «type-systems»

3
类型类与对象接口
我不理解类型类。我在某处读过,将类型类视为类型实现的“接口”(来自OO)是错误的并且具有误导性。问题是,我在将它们视为不同的东西以及这是怎么回事时遇到了问题。 例如,如果我有一个类型类(使用Haskell语法) class Functor f where fmap :: (a -> b) -> f a -> f b 与接口[1]有什么不同(Java语法) interface Functor<A> { <B> Functor<B> fmap(Function<B, A> fn) } interface Function<Return, Argument> { Return apply(Argument arg); } 我能想到的一个可能的区别是,在特定调用中使用的类型类实现未指定,而是由环境确定的,也就是说,检查可用的模块以实现该类型。这似乎是可以用OO语言解决的实现工件。例如编译器(或运行时)可以扫描包装程序/扩展程序/ monkey-patcher,以在类型上公开必要的接口。 我想念什么? [1]请注意f a,fmap由于自变量是OO语言,因此已将其从中删除,因此您将在对象上调用此方法。此接口假定f a参数已固定。

2
您如何从Lambda多维数据集的其他方面获得构造微积分?
据说CoC是Lambda Cube的所有三个维度的顶点。这一点对我来说一点都不明显。我想我了解各个方面,并且任何两个方面的结合似乎都导致相对简单的结合(也许我缺少了什么?)。但是,当我看CoC时,与其看起来像是这三者的结合,不如说是完全不同的事情。类型,属性和小型/大型字体来自哪个维度?依赖产品消失在哪里?为何为什么只关注命题和证明而不是类型和程序呢?是否有一些针对类型和程序的等效项? 编辑:如果不清楚,我要求解释CoC如何等效于Lambda Cube尺寸的直接结合。在我可以研究的某个地方是否存在所有这三个方面的实际结合(就程序和类型而言,而不是证明和命题)?这是对问题的评论,而不是当前的答案。

2
在Agda或Coq中,同构类型理论的哪些部分是不可能的?
当我们看这本书时,同伦类型理论 -我们看到以下主题: Homotopy type theory 2.1 Types are higher groupoids 2.2 Functions are functors 2.3 Type families are fibrations 2.4 Homotopies and equivalences 2.5 The higher groupoid structure of type formers 2.6 Cartesian product types 2.7 S-types 2.8 The unit type 2.9 P-types and the function extensionality axiom 2.10 Universes …

4
一元参数与二元参数
在看到Bernardy和Moulin在2012年发表的LICS论文(https://dl.acm.org/citation.cfm?id=2359499)之后,我最近对参数变得非常感兴趣。在本文中,他们将一元参数化内部化为具有依赖类型的纯类型系统,并暗示如何将构造扩展到任意Arities。 我只看过之前定义的二进制参数。我的问题是:一个有趣的定理的例子是什么,可以用二元参数性证明而不是一元参数性?看到一个可证明具有三级参数性但不具有二元性的定理的例子也很有趣(尽管我已经看到n参数= n等于n> = 2的证据,请参见http://www.sato.kuis .kyoto-u.ac.jp /〜takeuti / art / par-tlca.ps.gz)


1
类型类的数学(分类)描述
可以将功能语言视为一种类别,其中它的对象是类型,而词素之间是功能。 类型类如何适合此模型? 我假设我们应该只考虑那些满足大多数类型类所具有的约束但在Haskell中未表达的约束的实现。例如,我们应该只考虑Functor针对fmap id ≡ id和的那些实现fmap f . fmap g ≡ fmap (f . g)。 还是类型类型有其他理论基础(例如基于类型化的lambda计算)?

1
PTS / CoC中教会编码类型的从属类型
我正在Barendregt的lambda多维数据集中尝试使用纯类型系统,特别是最强大的系统,即构造微积分。该系统具有排序*和BOX。仅出于记录目的,下面我使用Morte工具https://github.com/Gabriel439/Haskell-Morte-Library的具体语法,该语法与经典的lambda演算很接近。 我看到我们可以通过某种类似于教堂的编码(对于代数数据类型也称为Boehm-Berarducci同构)来模拟归纳类型。作为一个简单的示例,我将type Bool = ∀(t : *) -> t -> t -> t与构造函数True = λ(t : *) -> λ(x : t) -> λ(y : t) -> xand一起使用False = λ(t : *) -> λ(x : t) -> λ(y : t) -> y。 我看到,术语级函数Bool -> T的类型通过实际上是同一性的函数Product T T与具有经典Product = λ(A : *) …

2
依赖类型的编译器比解释器难吗?
我一直在学习有关实现依赖类型的知识,例如本教程,但其中大多数是实现解释器。我的问题是,为依赖类型实现编译器似乎比编译器难得多,因为您可以真正评估依赖类型参数以进行类型检查。 所以 我的天真印象对吗? 如果是正确的话,关于实现支持依赖类型的静态检查语言的任何示例/资源?

3
基于朴素集理论的类型系统
据我了解,在计算机科学中,由于罗素悖论之类的原因,数据类型不是基于集合论的,但是像在现实世界中的编程语言中一样,我们不能将复杂的数据类型表示为“不包含自身的集合”,说实际上,类型是其成员的无限集合,其中实例成员资格由该类型/集合固有的功能数量(某些属性,方法的存在)定义?如果没有,那反例是什么?

2
严格积极性背后的直觉?
我想知道是否有人可以给我直觉,为什么归纳数据类型严格的正定性可以保证强大的规范化。 明确地说,我看到负出现是如何导致分歧的,即通过定义: data X where Intro : (X->X) -> X 我们可以编写一个发散函数。 但我想知道,怎样才能证明严格正归纳类型不容许分歧?也就是说,是否有某种归纳措施可以让我们构造强规范化的证明(使用逻辑关系或类似关系)?此类证据在哪里会针对负面事件进行分解?有没有很好的参考文献显示出归纳类型语言的强大归一化?

1
可以在基本仿射逻辑上键入“ sort”吗?
以下λ项,此处为标准形式: sort = (λabc.(a(λdefg.(f(d(λhij.(j(λkl.(k(λmn.(mhi))l)) (h(λkl.l)i)))(λhi.(i(λjk.(bd(jhk)))(bd(h(λjk.(j (λlm.m)k))c)))))e))(λde.e)(λde.(d(λfg.g)e))c)) 为教堂编码的列表实现排序算法。即,结果为: sort (λ c n . (c 3 (c 1 (c 2 n)))) β→ (λ c n . (c 1 (c 2 (c 3 n)))) 同样, sort_below = λabcd.a(λef.f(λghi.g(λj.h(λkl.kj(ikl)))(hi))e(λgh.h)) (λe.d)(λe.b(λf.e(f(λghi.hg)(λgh.cfh)))) 还可以对与上述相同的列表进行排序,不同之处在于您必须为参数提供一个额外的参数,并限制其数量: sort_below 4 [5,1,3,2,4] → [1,2,3] 我正在尝试确定这些术语是否可以在基本仿射逻辑上键入。由于我不知道任何公开的EAL类型检查器,因此事实证明这比我预期的要难。sort基本仿射逻辑中有一种类型吗?

1
同伦型理论和哥德尔不完备定理
库尔特·哥德尔(KurtGödel)的不完备性定理 确立了“除了能够进行算术的最琐碎的公理系统之外的所有系统的固有局限性”。 同伦类型理论为数学提供了另一种基础,它是基于更高归纳类型和一元公理的单价基础。该HOTT书解释说,类型是高胚,功能仿函数,类家庭网络brations等。 杰里米·阿维加德(Jeremy Avigad)和约翰·哈里森(John Harrison)在CACM上发表的最新文章“形式验证数学”讨论了形式验证数学和自动定理证明的HoTT。 哥德尔的不完全性定理是否适用于HoTT? 如果他们这样做, 哥德尔不完全性定理(在正式验证的数学范围内)会损害同伦类型理论吗?




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.