Tag: 依赖型

为什么我们需要容器?

(借口:标题模仿我们为什么需要单子的标题? ) 有容器 (和索引的)(和异教的)和描述 。 但是容器是有问题的 ,对于我的小规模的经验来说,容器的思考比描述的要难。 非索引容器的types与Σ同构 – 这是非常不确定的。 形状和位置的描述有助于,但在英寸 ⟦_⟧ᶜ : ∀ {α β γ} -> Container α β -> Set γ -> Set (α ⊔ β ⊔ γ) ⟦ Sh ◃ Pos ⟧ᶜ A = ∃ λ sh -> Pos sh -> A Kᶜ : ∀ {α β} -> Set α -> […]

伊德里斯的实例

是否有任何Idris的例子可以用来研究,或者将它用于通用/“现实世界”的应用? 我在Haskell方面非常精通,Idris似乎借用了很多,官方FAQ /文档相当不错,但是有一些更大的例子可以帮助我们探索。 目标是尝试使用Idris进行实际的软件开发。 TIA。

依赖types:依赖对types如何类似于不相交的联合?

我一直在研究依赖types,我理解以下内容: 为什么通用量化被表示为依赖函数types。 ∀(x:A).B(x)意思是“对于所有typesA x有一个typesB(x) ” 。 因此,它被表示为一个函数,当给定的任何值typesA返回typesB(x) 。 为什么存在量化表示为从属对types。 ∃(x:A).B(x)表示“存在typesA的x ,其typesB(x) ” 。 因此,它被表示为一个对,其第一个元素是一个特定值x的A型A而其第二个元素是一个B(x)型的值。 另外:有趣的是,通用量化总是与物质含义 一起使用,而存在量化总是与逻辑连接一起使用 。 无论如何,维基百科有关依赖types的文章指出: 与依赖types相反的是依赖对types , 依赖和types或sigmatypes 。 它类似于联产品或不相交的联合。 一个对types(通常是一个产品types)是如何类似于不相交的联合(这是一个和types)? 这一直困扰着我。 另外,依赖函数types与产品types相似如何?

从哪里开始依赖types编程?

有一个伊德里斯教程,Agda教程和许多其他的教程风格的论文和介绍性材料,永无止境的参考事物还没有学习。 我在这些中间爬行,大部分时间我都被math符号和新术语突然出现,没有任何解释。 也许我的math糟透了:-) 有没有任何有纪律的方法来进行依赖型编程? 就像你想要学习Haskell一样,你从“自学一个Haskell”开始,当你想学习Scala的时候,你从Odersky的书开始,对于Ruby来说,你会看到那个奇怪的教程,里边有变异的bug。 但是我不能用他们的书来启动Agda或Idris。 他们高于我的头。 我尝试了Coq,并陷入了所有关于TeX的certificate风格。 阿格达需要一个巨大的math背景和伊德里斯,好吧,让我们暂时离开! 我非常了解静态types系统,我对Scala非常熟练,如果需要,我可以使用Haskell。 我理解function范式并日复一日地使用它,我理解代数数据types和GADT(实际上相当顺利),而且我最近设法理解了Lambda Cube。 虽然我缺乏math和逻辑部分。

依赖types可以certificate你的代码是正确的,直到规范。 但是,你如何certificate规范是正确的?

相关types通常被广告作为一种方式,使您能够断言程序是否符合规范是正确的。 所以,例如,你被要求编写一个sorting列表的代码 – 你可以通过将“sort”的概念编码为一个types来certificate代码是正确的,并且编写一个函数,比如List a -> SortedList a 。 但是,如何certificate规范SortedList是正确的呢? 难道不是这种情况:你的规格越复杂,这个规格的types编码就越可能是不正确的?

为什么scala没有明确支持依赖types的任何原因?

有依赖于path的types,我认为可以在Scala中expression几乎所有像Epigram或Agda这样的语言的特性,但是我想知道为什么Scala不能更明确地支持这个语言,就像在其他领域做的很好(比如说,DSL)? 我错过了什么,像“这是没有必要的”?

为什么不从属地input?

我已经看到了几个消息来源,认为“Haskell正逐渐成为一种依赖型语言”。 这意味着,随着越来越多的语言扩展,Haskell正朝着这个大方向漂移,但还没有到来。 基本上有两件事情我想知道。 第一,很简单,“作为一种依赖型语言”实际上是什么意思 ? (希望不要过于技术性) 第二个问题是…缺点是什么? 我的意思是,人们知道我们正在走这条路,所以一定有一些优势。 但是,我们还没到,所以肯定会有一些不利因素阻止人们一路走来。 我觉得问题是复杂性急剧增加。 但是,并不真正了解什么依赖types,我不知道。 我所知道的是,每当我开始阅读一个依赖types的编程语言,文本是完全不可理解的……可能是这个问题。 (?)