什么是累积宇宙和“* : *”?

2023-12-29

在阿格达,有Set n。我认为,Set n将 Haskell 风格的值类型种类层次结构扩展到无限级别。那是,Set 0是正常类型的宇宙,Set 1是正常类型的宇宙,Set 2是正常类型的宇宙,等等。

相比之下,伊德里斯拥有所谓的“宇宙累积层次结构”。看来对于a < b, Type a: Type b,并推断出宇宙水平。但这在现实世界的程序中意味着什么?难道我们不能定义一些只在更高的宇宙中运行而不是在更低的宇宙中运行的东西吗?

顺便说一句,我知道这在逻辑上是不一致的,但是什么是* : *与上述一致的解决方案相比?


Agda 中的 * : * 对应于 Set n : Set n,此时您可能只需删除级别并仅使用 Set : Set,您可以使用 --type-in​​-type 标志来实现此目的。

然而,你不应该真正将 Set 0、Set 1、Set 2 ... 与类型、种类、排序进行类比;因为 haskell 中的类型带有这样的直觉:它们仅在类型检查期间相关,而您可以拥有完全有效的运行时数据,该数据具有集合 1 中的类型。

累积性是指 Set n 是 Set (n+1) 的子类型,因此如果您在 Set 0 中定义类型,您也可以在需要 Set 1 或 Set 2 的地方使用它。在 Agda 的标准库中,有Level 模块中的 Lift 类型可以实现类似的功能,但效果不佳。 将累积性添加到 Agda 中是有意义的。

此外,Idris 具有“典型的歧义”,其中宇宙级别对用户来说并不明显,但类型检查器应该以某种方式检查您是否以不一致的方式使用宇宙。

目前在 Idris 中实现的实际上并不足以排除悖论:https://github.com/idris-lang/Idris-dev/issues/287 https://github.com/idris-lang/Idris-dev/issues/287

然而,Coq 也允许您在某些情况下忽略宇宙级别,我相信他们没有已知的与此相关的不一致之处。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是累积宇宙和“* : *”? 的相关文章

  • 如何解释方案表达式 '(a 'b)

    a b 给出答案 a b 当 a 没有绑定 未加引号 时 这是如何工作的 这就是我们计算表达式时发生的情况 a b gt a b The quote 是简写quote http docs racket lang org guide quot
  • Java Stream:通过布尔谓词分为两个列表

    我有一个清单employees 他们有isActive布尔字段 我想分employees分为两个列表 activeEmployees and formerEmployees 是否可以使用 Stream API 来实现 最尖端的方法是什么 C
  • Scala Seq - 仅接受相同子类型的元素

    假设我有一个如下所示的类型层次结构 trait Color case class Red r String extends Color case class Green g String extends Color 是否可以创建一个接受Se
  • 为什么 OCaml 不允许函数匹配? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为什么较新的依赖类型语言没有采用 SSReflect 的方法?

    我在 Coq 的 SSReflect 扩展中发现了两个约定 它们似乎特别有用 但我还没有看到它们在较新的依赖类型语言 Lean Agda Idris 中得到广泛采用 首先 可能的谓词被表示为布尔返回函数而不是归纳定义的数据类型 默认情况下
  • Erlang 参与者与 OOP 对象有何不同?

    假设我有一个 Erlang actor 定义如下 counter Num gt receive From increment gt From self new value Num 1 counter Num 1 end 同样 我有一个 Ru
  • 阻塞事件循环

    我正在通过 Nodeschool 参加 函数式 Javascript 研讨会 其中一项练习的标题是 阻止事件循环 我很难理解它 通过过去的练习 我确保真正尝试理解解决方案 这样如果我必须重做问题 我就会理解如何解决它 而不是第一次就破解它
  • 是否可以有效地计算 lambda 演算项?

    我最近用 lambda 演算编写了很多程序 我希望能够实时运行其中一些程序 然而 尽管趋势函数范式基于 lambda 演算和 B 约简规则 但我找不到一个不是玩具 不以效率为目的的评估器 函数式语言应该很快 但我所知道的那些语言实际上并不提
  • 如何根据列表中的先前值过滤Haskell中的列表元素?

    我正在努力在 Haskell 中创建一个函数 该函数根据列表中前一个元素的条件过滤列表的数字 Example 前一个数字是 2 的倍数 myFunction 1 2 5 6 3 expected output 5 3 我知道如何申请filt
  • 在自己的定义中使用变量?

    无限流 val ones Stream Int Stream cons 1 ones 一个值怎么可能在它自己的声明中使用呢 看起来这应该会产生编译器错误 但它确实有效 它并不总是递归定义 这实际上有效并产生 1 val a Int a 1
  • 返回元组的第一个元素

    假设我创建一个将两个整数相加的函数 def addInt a Int b Int Int Int val x a b x 2 我回来了 result 2 故意为了这个问题 现在我想创建一个仅返回 x 的变量 val result addIn
  • 计算 python 字典/数组数据结构的非空尾叶 - 递归算法?

    我正在寻找一个函数来查找一种复杂字典 数组结构的所有非空端点 我认为因为我不知道嵌套数组的数量或它们的位置 所以它必须是递归的 而我只是还没有完全理解这种思维方式 所以对于嵌套字典 x top middle nested value nes
  • 为什么要使用 Python 进行函数式编程?

    在工作中 我们过去常常以非常标准的面向对象方式来编写 Python 程序 最近 有几个人加入了功能性潮流 他们的代码现在包含更多的 lambda map 和reduce 我知道函数式语言有利于并发性 但是函数式 Python 编程真的有助于
  • Ruby 反向柯里化:这可能吗?

    关于 Ruby 1 9 x 中的柯里化 我一直在某些地方使用它 并且可以像基本上支持 proc 参数的默认参数一样进行翻译 p proc x y z x y z p curry 1 gt returns a lambda p curry 1
  • 如何在 Perl 中以函数式风格进行编码?

    你如何 have a sub返回一个sub or 将文本作为代码执行 in Perl 另外 如何拥有匿名函数存储状态 子返回子作为coderef example 1 return a sub that is defined inline s
  • 减少/折叠幺半群列表,但减少器返回任一

    我发现自己遇到过几次这样的情况 我有一个减速器 组合 fn 如下所示 def combiner a String b String Either String String a b asRight String 它是一个虚拟实现 但 fn
  • 使用 Idris 实现 isLast

    查看 Idris 类型驱动开发中的练习 9 2 data Last List a gt a gt Type where LastOne Last value value LastCons prf Last xs value gt Last
  • Haskell 中列表列表的笛卡尔积

    给定一个长度列表的列表x所有子列表的长度都相同y 输出y x长度列表x包含每个子列表中的一项 例子 x 3 y 2 1 2 3 4 5 6 Output 2 3 8不同的输出 1 3 5 1 4 5 1 3 6 1 4 6 2 3 5 2
  • 正确使用术语 Monoid

    从下面的例子来看 我认为这样的说法是正确的String在串联运算下定义了一个幺半群 因为它是关联二元运算 并且String碰巧有一个身份元素 它是一个空字符串 scala gt Jane Doe Jane Doe res0 Boolean
  • @tailrec为什么这个方法不编译为“包含不在尾部位置的递归调用”?

    tailrec private def loop V key String V key match case gt loop key 此方法无法编译并抱怨它 包含不在尾部位置的递归调用 有人可以向我解释一下发生了什么事吗 这个错误消息对我来

随机推荐

  • 如何在 ajax 调用完成之前阻止页面导航

    因此 我有一个 ajax 调用来获取几十个大小为几兆字节的数据块 然后通过 html5 文件系统 api 将数据存储在本地 我想阻止用户在 ajax 调用完成之前离开页面 我决定探索onbeforeunload事件 让它通知用户应该停留在页
  • 如何在 Android 手机中使用语音识别而不出现烦人的对话框

    不修改android API 可以实现吗 我找到了一篇关于此的文章 有人评论说我应该对 android API 进行修改 但没有说如何修改 有人可以给我一些关于如何做到这一点的建议吗 谢谢 我找到了这篇文章 语音识别器 https stac
  • 对“Class::Class()”的未定义引用

    我正在编写一个GTKmm窗口程序 主窗口创建两个按钮 一个用于英语 一个用于中文 用户可以单击该按钮以显示适当语言的不同窗口 目前 我在初始化主窗口内的多项目容器时遇到问题 它是一个MainWindowPane类型的对象 它继承了Gtk H
  • 更新 npm start 后 Angular cli 出现错误

    我使用 Angular cli 创建应用程序并使用后端代理来处理后端并使用聚合物 vaadin 它可以正常工作 直到我更新到 Angular cli 1 0 0 beta 22 它给出错误 Tried to find bootstrap c
  • System.IO.File.ReadAllText 不会因无效编码而引发异常

    我的文件中有一些 UTF 8 文本utf8 txt 该文件包含一些 ASCII 范围之外的字符 我尝试了以下代码 var fname utf8 txt var enc Encoding GetEncoding ISO 8859 1 Enco
  • 如何查看android中真实连接的互联网?

    我做了一个程序 我必须使用wifi来连接互联网 我找了一些资料来检查wifi是否连接 但在某些情况下 你可以连接wifi AP 但仍然无法上网 比如wifi需要账号和密码进行https认证 或者wifi AP无法上网 那么 如何查看真实的互
  • jQuery fadeIn 和 fadeOut - 交换 div

    总的来说 我对 jQuery 和 javascript 很陌生 但感谢这些网站 我才得以顺利通过 我有一个页面 其中有六个隐藏的 div 通过带有各个 id 的相应链接进行调用 当每个 div 变得可见 fadeIn 时 当前显示的 div
  • 如何本地化 Info.plist 文件中 CFBundleDisplayName 的值?

    当我查看 Xcode 中的 Info plist 文件时 属性列表编辑器向我显示一个看起来像变量的值 PRODUCT NAME 如何 在哪里为我的应用程序设置本地化名称 您可以创建一个名为 InfoPlist strings 的本地化文件
  • 自定义 Jackson 解组行为

    我正在使用 Jackson fastxml 来解组 JSON 在我的对象中有两种属性 输入属性和计算属性 在输入 JSON 中 我仅获得输入值 计算值实际上取决于输入值 我必须在引用对象之前填充这些值 所以我只是检查杰克逊是否提供了任何钩子
  • 是从 Sencha Touch 2 开始比较好,还是从 Sencha Touch 1.x 开始比较好?

    我最近使用 PhoneGap 构建了一个演示应用程序 并选择尝试使用 JQuery Mobile 作为 UI 框架 这是 好吧 我现在想尝试一下 Sencha Touch 看看我是否更喜欢它 截至目前 2011 年 12 月中旬 Sench
  • 绕过 Grails 视图层直接将二进制内容写入客户端

    以下操作旨在写入二进制内容bytes完全绕过 Grails 视图层直接到客户端 def actionName byte bytes ServletOutputStream out response getOutputStream out w
  • CUDA:如何将 3D 阵列从主机复制到设备?

    我想了解如何将 3 维数组从主机内存复制到设备内存 假设我有一个包含数据的 3d 数组 例如 int host data 256 256 256 我想以这种方式将该数据复制到 dev data 设备数组 host data x y z de
  • 如何使用魔术方法(__get 和 __set)访问多个属性?

    我最近研究了魔法方法 get and set 并且想知道如何在类中实际设置和获取多个属性 我知道它仅适用于一个变量或数组 但我不确定是否可以访问多个变量 有谁可以向我解释一下吗 class myMagic2 public data publ
  • tauri 中窗口未定义时如何解决问题?

    我是 tauri 的新人 我遇到了从 tauri apps api 获取数据的问题 tauri apps api 1 1 0 tauri apps cli 1 1 1 这是我的反应代码如下 index jsx import getTauri
  • 为内联汇编创建常量池的正确方法是什么?

    问题是在 C 函数内部我有一个内联汇编 就像是 ldr r7 0xdeadbeef svc 0 如果未显式创建文字池 就是这种情况 汇编器 在翻译单元的末尾创建一个 通常这没问题 但如果 翻译单元事实证明非常巨大 这是行不通的 因为 文字池
  • 如何使用 FileReader 和 VueJs 获取图像高度和图像宽度?

    我有一个输入类型文件
  • 我需要删除一个我不知道名称的独特约束

    我维护的产品安装在多个位置 但被随意升级 许多表中添加了唯一约束 但我不知道任何特定实例的名称是什么 我所知道的是具有唯一约束的表 列名对 我想编写一个脚本来删除这些列 表组合上的任何唯一约束 这是 SQL Server 2000 及更高版
  • 使用 Spring AMQP 和 RabbitMQ HA 进行故障转移

    有多篇文章建议在 RabbitMQ 集群前面使用负载均衡器 然而 也有多个参考资料显示 Spring AMQP 正在使用一些 故障转移实现 例如代理恢复时连接重置 我对这个主题有几个问题 考虑到这些文章或多或少是旧的 而且今天是 2018
  • 在 MongooseJS 中创建模型时的第三个参数

    最近几天我学习了 MongoDB 和 MongooseJS 对我来说最好的技术是阅读代码 大量的代码 今天 我偶然发现了两个有趣的事情 这些事情没有被任何文档涵盖 或者也许它们被涵盖 但我只是找不到正确的部分 我想问的第一件事是ref财产
  • 什么是累积宇宙和“* : *”?

    在阿格达 有Set n 我认为 Set n将 Haskell 风格的值类型种类层次结构扩展到无限级别 那是 Set 0是正常类型的宇宙 Set 1是正常类型的宇宙 Set 2是正常类型的宇宙 等等 相比之下 伊德里斯拥有所谓的 宇宙累积层次