dependent-type相关内容

CoQ:对定义中的术语进行类型检查时使用类型相等

我有一个关于Coq中类型检查定义的问题。我遇到了一种情况,我有两个T1和T2类型的项,从定义上我知道T1和T2是相等的(T1=T2)。但是,我不能同时使用这两个术语,因为类型检查器认为这两个类型不相等。我试图分离出一个模拟情况的最小示例(是的,我知道这是一个愚蠢的属性,但我只想检查它的类型;): Require Import Coq.Lists.List. Lemma myLemma : ..
发布时间:2022-08-20 10:33:33 其他开发

实时持久队列总数

Okasaki 描述了可以在 Haskell 中使用类型实现的持久实时队列 数据队列 a = forall x .队列{前::[a], 后方 :: [a], 时间表 :: [x]} 增量旋转保持不变 长度表 = 前长 - 后长 更多详情 如果您熟悉所涉及的队列,则可以跳过此部分. 旋转函数的样子 旋转 :: [a] ->[一]->[一]->[一个]旋转 [] (y : _) ..
发布时间:2022-01-21 11:45:26 其他开发

什么是依赖类型?

有人可以向我解释依赖打字吗?我对 Haskell、Cayenne、Epigram 或其他函数式语言的经验很少,因此您使用的术语越简单,我就越感激! 解决方案 考虑一下:在所有体面的编程语言中,您都可以编写函数,例如 def f(arg) = 结果 这里,f 接受一个值 arg 并计算一个值 result.它是一个从值到值的函数. 现在,某些语言允许您定义多态(又名泛型)值: d ..
发布时间:2022-01-02 13:54:50 其他开发

我可以有一个未知的 knownNat 吗?

关于KnownNats,我想知道我是否可以吃我的蛋糕.我可以编写使用 Nats 的代码,它们可能是 KnownNats 和 UnknownNats(SomeNats?). 例如,如果我有一个依赖类型的向量 Vec (n :: Nat) a,我可以编写在编译和运行时都知道大小的代码吗?问题是我不想为静态和动态大小的“事物"复制整个代码.而且我不想通过在数据结构中存储大小而失去静态保证. ..
发布时间:2021-12-14 12:40:26 其他开发

是否有具有约束类型的语言?

是否有一种类型化编程语言可以像下面两个示例那样约束类型? 概率是一个浮点数,最小值为 0.0,最大值为 1.0. type 浮点数的概率子类型在哪里最大值 = 0.0min_value = 1.0 离散概率分布是一个映射,其中:键应该都是相同的类型,值都是概率,值的总和 = 1.0. 类型 DPDmap的子类型在哪里总和(值)= 1.0 据我所知,Has ..
发布时间:2021-12-14 12:37:43 其他开发

如何构建具有依赖类型长度的列表?

将我的脚趾浸入依赖类型的水域中,我对规范的“具有静态类型长度的列表"示例有一个裂缝. {-# LANGUAGE DataKinds, GADTs, KindSignatures #-}——一份善意的声明数据 Nat = Z |纳特数据安全列表 :: (Nat -> * -> *) 其中无 :: 安全列表 Z a缺点 :: a ->安全列表 n a ->安全列表 (S n) a-- 类型签名确保输 ..
发布时间:2021-12-14 12:18:52 其他开发

为什么不依赖类型?

我看到一些消息来源回应了“Haskell 正在逐渐成为一种依赖类型的语言"的观点.这意味着随着越来越多的语言扩展,Haskell 正在朝着那个大方向漂移,但还没有. 基本上有两件事我想知道.第一个很简单,“作为一种依赖类型的语言"实际上意味着是什么?(希望不要太技术化.) 第二个问题是……缺点是什么?我的意思是,人们知道我们正朝着那个方向前进,所以它肯定有一些优势.然而,我们还没有到那 ..
发布时间:2021-12-14 12:00:07 其他开发

Python 可以实现依赖类型吗?

Idris 中依赖类型的简单演示是 向量,其类型取决于其值. 我们可以在 Python 中使用类型提示: 来自输入导入列表def append(a: List[int], b: List[int]) ->列表[int]:返回 a + b打印(追加([1, 2], [1, 3, 4])) 那么,我们可以实现一个类型Vect,它可以在 中使用 def append(a: Vect[m, ..
发布时间:2021-09-11 20:06:09 Python

Scala 宏生成的依赖类型似乎“不起作用"

为handwavey 标题道歉.我不完全确定如何简洁地表达这个问题,因为我以前从未遇到过这样的事情. 背景信息: 我有以下特征,其中 U 类型用于保存 无形可扩展记录 类型: trait Flattened[T] {类型 U 我正在使用黑盒宏(出于本问题范围之外的原因)来创建 trait 的新实例: object flatten {导入 scala.language.exper ..

在 scala shapeless 中,是否可以将文字类型用作泛型类型参数?

假设我正在编写一个向量乘法程序.遵循本文中的要求: https://etrain.github.io/2015/05/28/type-safe-linear-algebra-in-scala 只有当两个向量的维数相等时,乘法才能成功编译.为此,我定义了一个通用类型 Axis,它使用一个无形的文字类型(维数)作为类型参数: import shapeless.Witnesstrait A ..
发布时间:2021-07-15 21:16:57 其他开发

什么时候需要 Shapeless 中的依赖类型?

据我所知,依赖类型允许您不指定输出类型: 例如,如果您有一个类型类: trait Last[In] {输入} 然后你可以在不指定输出类型的情况下召唤一个实例: implicitly(Last[String :: Int :: HNil])//输出类型计算为 Int 并且 Aux 模式允许您再次指定输出类型: implicitly(Last.Aux[String :: Int :: ..
发布时间:2021-07-15 19:54:05 其他开发

使用编译时宏调用scala函数时,如何在导致编译错误时顺利进行故障转移?

假设我打算在scala程序中使用singleton/literal类型特性,这个特性在scala 2.12的shapeless库中提供(scala 2.13支持原生文字类型,但我们以shapeless为例) 在 shapeless 中,文字类型表示为 Witness 对象的路径相关的内部类型,可以从 Scala 文字/常量隐式转换: 导入 com.tribbloids.spike.Base ..

scala 不明确支持依赖类型的任何原因?

有路径依赖类型,我认为可以在 Scala 中表达 Epigram 或 Agda 等语言的几乎所有功能,但我想知道为什么 Scala 不支持 this 更明确地说它在其他领域(比如 DSL)做得很好?我缺少什么,比如“没有必要"? 解决方案 除了语法上的便利之外,单例类型、路径依赖类型和隐式值的组合意味着 Scala 对依赖类型的支持出奇地好,正如我所尝试的在 shapeless 中演示. ..
发布时间:2021-07-15 19:14:16 其他开发

Perl6 是否支持依赖类型?

我最近查看了维基百科页面,了解相关类型,我想知道;Perl 6 是否真的引入了依赖类型?我似乎找不到可靠的消息来源. 这对某些人来说可能很明显,但对我来说肯定不是很明显. 解决方案 反对 Ven,在 Perl 6 对 SO 问题“Is there a language with constrainable types?"的回答之后的评论中,写道 “perl6 没有依赖类型"后来在#p ..
发布时间:2021-07-02 19:32:28 其他开发

什么是公理 K?

我注意到自 HoTT 以来,关于“Axiom K"的讨论越来越频繁.我相信这与模式匹配有关.我很惊讶在 TAPL、ATTAPL 或 PFPL 中找不到参考. 什么是 Axiom K? 它是否像 SML 一样用于 ML 样式的模式匹配(或仅用于依赖模式匹配)? Axiom K 的合适参考是什么? 解决方案 Axiom K 也称为身份证明唯一性原则,是关于性质的公理Martin-Lö ..