1

例如,如果我有一个 HList:

HList<A,HList<B,HList<C,HNil>>> list = ...

有没有办法将每个元素应用于柯里化函数:

F<A,F<B,F<C,D>>> f = ...

以这样一种方式,我会以某种方式得到一个D

此外,如果我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?

4

1 回答 1

0

首先,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);
于 2019-11-23T13:40:07.650 回答