gpt4 book ai didi

java - 使用 functionjava HList,有没有办法将任意 HList 的每个元素传递给相应的柯里化(Currying)函数?

转载 作者:太空宇宙 更新时间:2023-11-04 11:36:29 27 4
gpt4 key购买 nike

例如,如果我有一个 HList:

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

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

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 吗?

最佳答案

首先,HList<A, HList <B,HList<C, HNil>>>是不正确的。一定是HCons<A, HCons<B, HCons<C, HNil>>> .

Is there a way to apply each element to a curried function:

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

in such a way that i would somehow get a 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);

它回答了你的问题,还是有别的意思?

And furthermore, if i cons an E to the HList

HList<E,HList<A,HList<B,HList<C,HNil>>>> list2 = list.extend((E)e);

and then somehow apply

F<E,F<A,F<B,F<C,D>>>> ef = ..

to that HList in the same manner?

再说一次,如果我的理解是正确的:

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);

关于java - 使用 functionjava HList,有没有办法将任意 HList 的每个元素传递给相应的柯里化(Currying)函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43217133/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com