existential-type相关内容

如何从作用域中的约束族派生类型类实例?

编辑:我已经跟进了更多specific question。感谢这里的答题者,我认为接下来的问题更好地解释了我在这里介绍的一些念力。 tl;dr在构造函数上使用带有存在约束的GADT时,我很难在表达式中获得约束的证明。(很严重,对不起!) 我已将一个问题归纳为以下几点。我有一个简单的GADT,它表示称为X的点和称为F的函数应用程序。点X被约束为Objects。 data GADT ..

Haskell 中存在与普遍量化的类型

这些之间究竟有什么区别?我想我理解存在类型是如何工作的,它们就像在 OO 中有一个基类,没有办法进行向下转换.通用类型有何不同? 解决方案 这里的术语“普遍"和“存在"来自谓词逻辑. 通用量化通常写成∀,可以读作“for all",大致意思是听起来像:在类似于“∀x...."的逻辑语句中,任何代替“..."的东西对于所有可能的“x"都是正确的,您可以从被量化的任何一组事物中进行选择. ..
发布时间:2022-01-24 16:17:35 其他开发

如何使用更高等级(rank-N)类型多态性来表达存在类型?

我们习惯于为多态函数使用通用量化的类型.存在量化类型的使用频率要低得多.我们如何使用通用类型量词来表达存在量化类型? 解决方案 事实证明,存在类型只是 Σ 类型(sigma 类型)的一个特例.它们是什么? Sigma 类型 正如 Π-types (pi types) 泛化我们的普通函数类型,允许结果类型依赖其参数的值,Σ-types 泛化对,允许第二个组件的类型依赖第一个值. ..

具有更高种类类型的类的自类型注释

给定: 抽象类数据库[F[_]] 我怎样才能使这个特性起作用: //标记特征表明数据库插件支持StaticRolestrait StaticRoles { this: Databases[_] =>} 我想确保 StaticRoles 只混合在扩展 Databases 的类中,但是我不关心类型参数 的具体值>F. 代码返回: 错误:_$1 没有类型参数,预期:1 这是公平的,但它 ..
发布时间:2021-07-15 20:57:50 其他开发

在Scala中创建元组时键入绑定错误

说我有一个类型 特质模式[T]trait MyType[T, M 这个编译 val t: MyType[_, _] = ???吨 但不是这个 val t: MyType[_, _] = ???“some_string"->吨 错误表示类似类型参数[_$0,_$1]不符合特征MyType的类型参数边界 所以我的问题是为什么这不会在元组创建时编译? 解决方案 实际上 t 和 ..
发布时间:2021-07-15 20:48:23 其他开发

存在类型如何与路径依赖类型重叠?

启动 Scala 3 存在类型已删除原因之一是 存在类型与路径依赖类型在很大程度上重叠,所以拥有它们的收益相对较小. 鉴于“很大程度上",所以并非总是如此,我想知道是否可以提供一个具体的示例来演示如何将存在类型重写为路径依赖类型,以及一个无法进行此类替换的示例? 解决方案 假设 T 是我们要通过存在量词绑定的类型,并且 F[T] 是某种依赖于 T 的类型,所以 type A ..
发布时间:2021-07-15 20:34:21 其他开发

辅助模式用法在不推断适当类型的情况下编译

考虑以下涉及 Aux-pattern 的简单示例: 密封性状 AdtBase抽象案例类 Foo(){输入 T Scastie 我真的不明白为什么 testBaz 会编译.我也预计类型不匹配. 解决方案 似乎没有深层原因. 因为当您显式指定类型参数时,两种方法都会编译 def testBaz(baz: Baz) = Bar[baz.foo.T](baz.foo)//编译d ..
发布时间:2021-07-15 19:58:46 其他开发

GHC是否使用存在类型的动态分派?

下面的代码是否使用了C ++或Java所理解的动态调度? 据我了解,在最后一行,编译器可能无法在编译时知道要调用(==)的哪个实现,但是代码可以编译并产生正确的结果.有人可以解释一下,这背后是什么样的实现方式(例如vptr)? {-#语言存在量化#-}数据值= A整数数据ForallFunc =全部a.等式=>永远(价值-> a)unpackA(A int)= intequalTest ..
发布时间:2021-05-13 20:40:13 其他开发

我可以表达子类约束吗?

仍然在限制条件下使用存在性(只是探索这个设计空间,我知道许多Haskellers认为它很糟糕).有关更多信息,请参见此问题./p> {-#语言RankNTypes#-}{-#语言的ExistentialQuantification#-}{-#语言ConstraintKinds#-}{-#语言类型应用程序#-}进口GHC.Exts(约束)Foo A类在哪里foo :: a->诠释类Foo a = ..
发布时间:2021-05-13 20:40:09 其他开发

使用更高种类的类型参数时,了解类型参数不符合类类型参数界限错误

我试图理解为什么当我在MyModel中为T使用更高种类的类型参数时,下面的代码为何无法编译 抽象类Model [M< ;: Model [M]]类MyModel [T]扩展了Model [MyModel [T]]类Bar [TModel< ;: Model [TModel]]Foo对象扩展了App {新栏[MyModel [_]]} 但是如果我将其更改为 new Bar [MyMod ..

如何在Haskell中声明抽象数据容器类型?

我阅读了威廉·库克(William Cook)的“重新审视数据抽象",并重新阅读了拉尔夫·拉姆梅尔(Ralf Laemmel)的“表达引理",试图理解如何在Haskell中运用前一篇论文的思想.因此,我试图了解您如何在Haskell中实现(例如,设置联合函数)而不指定类型? 解决方案 有多种方法,具体取决于要使用的“抽象数据类型"的版本. 具体但不透明的类型:自从我读了Cook的可爱 ..
发布时间:2020-06-23 18:32:30 其他开发