问题标签 [existential-type]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Scala的存在类型和Java通配符的区别?
比 Stack Overflow 问题更具体一点什么是存在类型?,Scala的存在类型和Java的通配符有什么区别,最好有一些说明性的例子?
到目前为止,在我所看到的所有内容中,它们似乎都相当。
一些参考。Martin Odersky提到了他们;谷歌对我的问题的热门回答:
MO:最初的通配符设计……受到存在类型的启发。事实上,原始论文有一个存在类型的编码。但是当实际的最终设计出现在 Java 中时,这种联系有点丢失了
scala - 为什么除非添加显式类型参数,否则以下 Scala 代码无法编译?
上面的代码编译失败。编译器的错误信息是:
如果我将方法声明更改为UnknownValue
,def getType: Option[Class[_]] = None
那么不带类型参数的 Map() 也会编译。
为什么?
haskell - Haskell 问题:约束数据类型以使用 show
代码:
我希望Const a包含一个 show 类型的值,以便我以后可以打印它。所以在 C# 中我会写:
我怎么能在 Haskell 中做到这一点?
haskell - Haskell 计数列表类型
所以,只是为了好玩,我一直在玩 Haskell 中的 CountedList 类型,使用 Peano 数字和智能构造函数。
类型安全head
,tail
对我来说真的很酷。
我想我已经达到了我知道该怎么做的极限
(对于任何转录错误,我深表歉意——我最初用我的 Haskell 编译器写这个的机器目前已关闭)。
我所做的大部分编译都没有问题,但我遇到了ofList
and的问题filter
。我想我理解为什么 - 当我说时ofList :: [a] -> CountedList n a
,我是在说ofList :: forall n . [a] -> CountedList n a
- 创建的列表可以是任何所需的计数类型。我想写的是相当于伪类型的ofList :: exists n . [a] -> CountedList n a
,但我不知道怎么写。
有没有一种解决方法可以让我像我想象的那样编写ofList
和filter
运行,或者我已经达到了我能做的极限?我有一种感觉,我缺少一些存在类型的技巧。
scala - 价值的存在量化
我在 Scala 语言规范(3.2.10 Existential Types)中遇到了对值的存在量化。
有人有说明性的用例吗?
T forSome {val x: S}
定义为T forSome { type t <: S with Singleton }
。规范(3.2.1 单例类型)中提到了 Singletron 特征,但我在 Scaladoc 中找不到它。它在哪里定义?
haskell - 如何在 Haskell 中声明一种抽象数据容器类型?
我阅读了 William Cook 的“On Data Abstraction, Revisited”,并重新阅读了 Ralf Laemmel 的“The expression lemma”,试图了解如何在 Haskell 中应用之前论文的想法。所以,我试图了解如何在 Haskell 中实现一个集合联合函数而不指定类型?
haskell - Haskell:现有类型的记录更新
当我遇到错误时,我试图对存在记录使用记录更新。一个快速的谷歌让我找到了功能请求 #2595,它显示它在版本 6.8.3 中为 GHC 实现。我使用的是 6.10.4,所以我认为它应该可以工作,但是功能请求中的示例代码:
产生与功能请求中抱怨的相同的错误:
这是在某个时候有意放弃的功能,还是我应该提交错误报告?
polymorphism - OCaml 中的状态单子
我试图在 OCaml 中实现 state monad(作为练习)。我的实现如下所示:
我为记录字段选择了存在类型,因为我不喜欢使用仿函数并将状态类型包装在模块中的想法。getState
上面的实现是有效的,但是我在实现and时遇到了问题setState
。我试图像这样实现它们:
这不起作用,因为推断的字段类型,例如'a -> ('a * 'a)
和'a -> (unit * 'a)
,不如声明的类型通用's . 's -> ('a * 's)
。我理解为什么会发生这种情况,但我想知道是否有另一种使用记录方法使其工作的方法?
谢谢。
干杯,亚历克斯