我正在考虑写一个sudo apt upgrade && sudo apt install pkg-config
"类型类"在Java中。例如,
Monoid
但是,如果您希望自己的interface Monoid<A> {
Monoid<A> mappend(Monoid<A> ma);
}
成为List
。您不能Monoid
override
到mappend
。问题是参数应该是反变量的。一种残酷的力量方式是将List<A> mapppend(List<A> la);
声明如下:
mappend
经过一段时间的实验,我想到了以下几点:
Function<? extends Monoid<A>, ? extends Monoid<A>> mappend();
但它不是一般解决方案(可能是interface X<A, Y extends X<?,?>> {
Y f(Y y);
}
interface Z<A> extends X<A,Z<A>> {
@Override Z<A> f(Z<A> za);
}
或Applicative
):
Monad
interface X<A, Y extends X<?,?>> {
Y f(Y y);
<B> Y g(Function<A,Y> ay);
}
interface Z<A> extends X<A,Z<?>> {
@Override Z<A> f(Z<?> za);
@Override <B> Z<B> g(Function<A, Z<?>> ay);
}
是我能为@Override <B> Z<B> g(Function<A, Z<?>> ay);
做的最好的事情。
有没有办法获得bind
?