一个 question刚刚想出了java泛型。示例代码是:
public interface A < T extends A < T> > {
}
一个链接的问题询问
Class Enum<E extends Enum<E>> ...
当我尝试阅读有关这些泛型表达式的 java 文档时,我的眼睛呆滞了,这对我来说是希腊语。
我希望我能用 Haskell 等价物来理解它们!
Haskell 中这些示例中的一个或两个的等价物(或类似物)是什么?
最佳答案
这个技巧用于允许接口(interface)引用具体的实现类型,例如强制参数的类型和结果的类型与实现类的类型相同,如下所示:
public interface Num<A extends Num<A>> {
A add(A other);
}
这类似于您在 Haskell 中免费获得的类型类:
class Num a where
(+) :: a -> a -> a
关于generics - 什么是 Java 的 Curiously Recurring Generic Pattern 的 Haskell 等价物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8187773/