Java的接口和Haskell的类型类:区别和相似之处?

Java的接口和Haskell的类型类:区别和相似之处?,第1张

Java的接口和Haskell的类型类:区别和相似之处?

我会说一个接口有点像一个类型类

SomeInterface t
,其中所有值都具有类型
t ->whatever
(其中
whatever
不包含
t
)。这是因为有了Java和类似语言中的继承关系,所调用的方法取决于调用它们的对象的类型,而没有别的。

这意味着很难

add :: t -> t ->t
通过接口实现类似的功能,因为在一个以上的参数上它是多态的,因为接口无法指定该方法的参数类型和返回类型与的类型相同。被调用的对象(即“自我”类型)。使用Generics,有一种方法可以通过用通用参数(该参数应该与对象本身具有相同的类型)制作一个接口来伪造此伪装,例如
Comparable<T>
,它应如何使用,
Fooimplements Comparable<Foo>
以便您
compareTo(T otherobject)
具有类型
t -> t ->Ordering
。但这仍然需要程序员遵循此规则,并且当人们想要创建使用此接口的函数时,还必须引起麻烦,因为他们必须具有递归的泛型类型参数。

同样,您不会有类似的事情,

empty :: t
因为您不在这里调用函数,因此它不是方法。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5131340.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存