Tag: agda

为什么我们需要容器?

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

Hask或Agda是否有均衡器?

关于这是一个math问题,我还是有点犹豫不决。但是我怀疑一般的math家是不太可能知道或关心这个类别的,特别是Haskell程序员可能会这样做。 所以,我们知道Hask有或多或less的产品(当然,我正在与理想化的Hask合作)。 我感兴趣的是它是否有均衡器(在这种情况下,它将有所有有限的限制)。 直觉上看起来不是这样,因为你不能像你所能做的那样进行分离,所以一般来说子对象似乎很难构build。 但是对于你想要的任何特定情况,似乎你可以通过在Set中计算均衡器并计算它来破解它(因为毕竟,每个Haskelltypes都是可数的,每个可数集是同构或者有限types或者自然,Haskell都有)。 所以我不明白我怎么去寻找一个反例。 现在,Agda似乎更有希望了:形成子对象相对容易。 是明显的西格玛typesΣ A (λ x → fx == gx)是一个均衡器吗? 如果细节不起作用, 道德上是平衡器吗?

依赖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可以certificate你的代码是正确的,直到规范。 但是,你如何certificate规范是正确的?

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

如何有效地使用Agda的自动certificatesearch?

在写certificate时,我注意到Agda的自动certificatesearch经常找不到对我来说显而易见的解决scheme。 不幸的是想出了一个小例子,说明这个问题似乎很难,所以我试图描述最常见的模式。 我忘了将-m添加到孔中以使Agda查看模块范围。 我可以将该标志设为默认值吗? 会有什么缺点? 通常当前空洞可以由我将要实现的函数的参数填充。 即使添加-m ,Agda也不会考虑let或where子句中引入的函数参数或符号。 简单地尝试所有这些,有什么不对吗? 在查看目标时,甚至不显示let或where子句中引入的符号。 为什么? 还有哪些其他习惯可以使自动更有效?

直觉型理论的组合逻辑等价物是什么?

我最近完成了一门以Haskell和Agda(一种依赖types的函数式编程语言)为特色的大学课程,并且想知道是否可以用组合逻辑来替代这些中的lambda演算。 对于Haskell来说,使用S和K组合器似乎是可能的,从而使其不存在任何问题。 我想知道Agda的等价物是什么。 也就是说,能不能使用任何variables就可以生成一个与Agda相当的函数式编程语言? 另外,是否有可能以某种方式取代组合器的量化? 我不知道这是否是巧合,但是例如通用量化使得types签名看起来像一个lambdaexpression式。 有没有办法从types签名中去除通用量化而不改变其含义? 例如: forall a : Int -> a < 0 -> a + a < a 同样的事情可以不使用forall来expression吗?

Agda和Idris的区别

我开始深入依赖types编程,并发现Agda和Idris语言是最接近Haskell,所以我开始在那里。 我的问题是:他们之间的主要区别是什么? 这两种types的系统是否同样expression? 对收益进行全面的比较和讨论是非常好的。 我已经能够发现一些: Idris的Haskelltypes类,而Agda带有实例参数 伊德里斯包括一元和适用的符号 他们两个似乎都有某种可重新expression的语法,虽然不太确定它们是否相同。 编辑 :在这个问题的Reddit页面有更多的答案: http : //www.reddit.com/r/dependent_types/comments/q8n2q/agda_vs_idris/