问题标签 [adhoc-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 - 本地定义不同参数的重载函数时不能调用静态导入的重载函数?
我有以下简单的 Java 代码:
爪哇
a/A1.java
a/A2.java
f
定义了两次,带有重载参数。如您所见,f
静态导入两个定义并调用它们是有效的:
但是当我g
在本地定义以及从某个地方静态导入它时,它不起作用。这是我在 Main.java 中取消注释第 8 行时的输出:
为什么?
我尝试将本地g
更改为非静态,并删除对本地的调用g
:
但它没有用:
f# - F#:算术运算符和多态性丢失(值限制?)
此代码无法编译:
我猜统一器修复了与它们第一次出现相关联的类型f
参数g
。是什么支配了这个过程?我认为这与“价值限制”非常相似,但f
已经g
被 eta 扩展了!这是一个难题。
我肯定会想象在整数类型上键入具有临时多态性的预定义运算符背后有一些黑魔法,但这只是我的猜测。任何信息表示赞赏。
haskell - 类型推断干扰了引用透明度
Haskell 语言在引用透明度方面提供的确切承诺/保证是什么?至少 Haskell 报告没有提到这个概念。
考虑表达式
我想知道这个表达式是否为 1。为了我的安全,我会执行两次:
现在提供(True,False)
GHCi 7.4.1。
显然,这个表达式现在在引用上是不透明的。我如何判断一个程序是否会受到这种行为的影响?我可以将整个程序淹没,::
但这并不能使它变得非常可读。我想念的还有其他类别的 Haskell 程序吗?那是在完全注释和未注释之间?
(除了我在 SO 上发现的唯一有点相关的问题之外,这上面肯定还有其他问题)
string - 如何将StrLn 放入Data.ByteString.Lazy.Internal.ByteString?
我使用encode
(通过 JSON 到字符串的 Haskell 类型):
该字符串是(根据编译器的错误消息)Data.ByteString.Lazy.Internal.ByteString
:。
我怎么把StrLn呢?
理论上说
我正在寻找的是一个 ad-hoc polymorphic putStrLn
,即,我正在为putStrLn
特定的类似字符串的类型寻找合适的语义实例。
编译器消息
如果有人感兴趣,编译器消息:
也可以看看
类似的问题,但类型有所不同:如何将StrLn 放入Data.ByteString.Internal.ByteString?.
haskell - 在 Haskell 中声明一个“子类”
我在 Haskell 中使用以下简单代码时遇到了麻烦:
这里前两个实例声明按预期工作,但第三个实例声明根据标志组合触发各种错误。
我知道它Num a
不短ICycle a
,因此编译器无法完成类型检查。在示例中,我已经看到通过使右侧成为更大的术语或首先将感兴趣的类声明为其他类的子类来规避这一点。相反,在这里,我基本上想将现有类声明为新类的子类。
我想知道是否有人反对这种类型类的使用。或者,如果有一个自然的解决方案。
adhoc-polymorphism - 派生类和多态性
我的程序的给定代码是:
已提供编码说明,我必须添加代码。我编码的构造函数有以下错误:“无法分配抽象类型的对象”
我的派生类定义是:
希望我没有犯额外的错误。
python - Is there a way to get ad-hoc polymorphism in Python?
Many languages support ad-hoc polymorphism (a.k.a. function overloading) out of the box. However, it seems that Python opted out of it. Still, I can imagine there might be a trick or a library that is able to pull it off in Python. Does anyone know of such a tool?
For example, in Haskell one might use this to generate test data for different types:
The beauty of this is that I can extend genRandom
for my own custom types without touching the testing library.
How would you achieve something like this in Python?
polymorphism - OCaml 中的多态性 - ad hoc、参数、包含/子类型
我在理解不同类型的多态性时遇到问题,特别是关于 OCaml。我知道多态性允许在 OCaml 中表示为 'a 的多种类型,但我不明白不同类型的多态性是什么。
如果有人可以用相对低级的语言给我一个解释,那就太棒了!ad hoc、参数化、包含/子类型化
java - Java中的多态非curried方法调用(即席多态)
让我从一个例子开始。
假设我有一个抽象Vehicle
类。
而类Car
和Bicycle
继承自这个抽象类。
当我将该ride()
方法应用于Vehicle
实际类型只能在运行时确定的类型对象时,JVM 将应用正确版本的ride()
.
也就是说,在 sort 的柯里化方法调用中v.ride()
,多态以预期的方式工作。
但是,如果我有一个只接受一个子类型Vehicle
作为参数的方法形式的外部实现呢?那么,如果我有repair(Bicycle b)
和repair(Car c)
方法呢?uncurried 多态方法调用repair(v)
将不起作用。
例子:
我必须检查班级名称和沮丧。有没有更好的解决方案?
编辑:我的实际目的是我正在遍历一个抽象语法树,我碰巧注意到我想要双重调度。
Ast
是一个抽象类,实际的 AST 节点(如Assign
、MethodCall
或)从中ReturnStmt
继承。body
是Ast
s 的多态列表。
代码片段:
我实现双重调度的唯一可能性是检查类和向下转换或正确实现访问者模式,对吗?