首先,HList<A, HList <B,HList<C, HNil>>>
是不正确的。一定是HCons<A, HCons<B, HCons<C, HNil>>>
。
有没有办法将每个元素应用于柯里化函数:
F<A,F<B,F<C,D>>> f = ...
以这样一种方式,我会以某种方式得到一个D
?
如果我理解你的问题,你想要这个:
A a = list.head();
B b = list.tail().head();
C c = list.tail().tail().head();
D d = f.f(a).f(b).f(c);
它回答了你的问题,还是你的意思是别的?
此外,如果我E
反对 HList
HList<E,HList<A,HList<B,HList<C,HNil>>>> list2 = list.extend((E)e);
然后以某种方式申请
F<E,F<A,F<B,F<C,D>>>> ef = ..
以同样的方式到那个 HList?
同样,如果我的理解是正确的:
E e = list2.head();
A a = list2.tail().head();
B b = list2.tail().tail().head();
C c = list2.tail().tail().tail().head();
D d = ef.f(e).f(a).f(b).f(c);