问题标签 [parametric-polymorphism]
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 - Eclipse 告诉我 Long 是不可比的
我在这里遇到了一个奇怪的情况,即 eclipse 告诉我 Long 是“不是有界参数的有效替代品<T extends Comparable<? super T>>
”。关于可能是什么原因的任何建议?我在下面粘贴相关代码
抽象对:
混凝土对:
我尝试将抽象类标题更改为:
这没有帮助,并且还:
但随后,在具体课程中,我收到一条通知,提示我应该将类型参数更改为<Comparable, Object>
.
scala - Scala: lambda 被传递给一个函数,被包装到 Runnable 中并且之后没有被执行——这是怎么回事?
考虑以下代码(您可以直接在Ideone上运行它):
它打印a c d e
,这意味着第一个 lambda 已成功传递给foo
,但在我调用时未执行x.run()
。但是,第二个已成功执行。
如果我删除包装Runnable
并直接运行这些 lambda,它们都可以工作。我在使用 Java 库的 Scala 绑定时遇到了这种行为。
这里发生了什么?发生了什么x
,为什么它有一些正确的值但什么也不做?
haskell - 我对 Haskell 的“推导”的期望应该是什么?
提前为初学者问题道歉,但我一直在努力寻找有用的信息。我正在研究“Learn You Haskell for Great Good”,并试图理解派生关键字,这似乎是 Java 的实现,但由于类别理论或其他原因,它应该具有很酷的自动代码生成。我为 2 向量声明了一个数据结构,例如
然后我可以用它来做类似的事情
现在我想做的是向量加法和标量乘法,比如
但是当我尝试
所以编译器想出了如何显示原始类型的笛卡尔积,但是加法太难了?也许 Num 不是派生的正确类型类?多久可以期望派生一个类型类并在没有额外工作的情况下获得工作代码,例如我如何不必编写自己的 show 函数?
非常感谢,
约翰
scala - Scala 中参数化类型的声明中是否允许使用中缀表示法?
我一直在试图理解这篇文章中提出的问题的答案。
下面的代码重现了接受的答案中提出的解决方案。
如果隐式定义为
但相反,它是用看起来像中缀符号的东西定义的。我从来不知道一个类型DefaultsTo[T, Node]
可以写成T DefaultsTo Node
. 这是怎么回事?
haskell - 为什么要求“forall”在数据定义中具有多态类型?
看来我需要明确地说forall
在数据定义中有参数类型。例如,这个
将工作,而这
惯于。
也许我问的东西太明显了,但是我不清楚原因是因为在大多数其他情况下,您不需要显式forall
指定参数类型;编译器代替它。那么这里有什么区别呢?
haskell - 为什么是forall a。a 不被视为 Int 的子类型,而我可以使用 forall a 类型的表达式。任何地方都需要 Int 类型?
考虑以下通过类型检查器的函数定义对:
即类型的表达式forall a. a
可以在需要类型之一的地方使用Int
。在我看来,这很像子类型,但据称 Haskell 的类型系统缺少子类型。这些形式的可替代性有何不同?
这个问题并不特定于forall a. a
. 其他示例包括:
polymorphism - OCaml 中的多态性 - ad hoc、参数、包含/子类型
我在理解不同类型的多态性时遇到问题,特别是关于 OCaml。我知道多态性允许在 OCaml 中表示为 'a 的多种类型,但我不明白不同类型的多态性是什么。
如果有人可以用相对低级的语言给我一个解释,那就太棒了!ad hoc、参数化、包含/子类型化
java - 具有参数化方法的动态多态性
我想对动态多态有一些清晰的了解。当子类中的方法被覆盖和重载时,我无法弄清楚方法调用。
这是父类:
家长班:
儿童班:
这是调用者类。
我可以在控制台中看到输出,但无法理解方法调用背后的原因。
agda - 在 Set₀ 建模 System F 的参数多态性
在 System F 中,多态类型的类型是*
(因为这是 System F 中唯一的类型......),例如对于以下封闭类型:
我想在 Agda 中表示 System F,因为一切都在 中*
,我想我会将类型(如上)解释为 Agda Set
s; 所以像
但是,Agda 没有多态类型,因此在 Agda 中,上述类型需要是(大!)Π 类型:
这意味着它不在 Set₀ 中:
有没有办法解决这个问题,或者 System F 在这个意义上不能嵌入到 Agda 中?
haskell - haskell 多态类型函数
Haskell 中是否有可能拥有一个可以采用多态类型并返回多态类型的函数?
例如,我想要一个接受值的函数,如果值是类型Foo
,则返回 Int,如果是类型,则返回 StringBar
这样的事情可能吗?如果不是,基于类型路由到另一个函数的最佳实践是什么?