C1
C2
D
public interface BinaryFunctor<C1 extends Element<C1>,C2 extends Element<C2>,D extends Element<D>>
eval(C1 c1, C2 c2)
D eval(C1 c1, C2 c2)