提问人:Shnd 提问时间:9/29/2023 更新时间:9/29/2023 访问量:43
如何在“fp-ts”HKT 和 Kind、Kind2、...是匹配类型吗?
How in "fp-ts" HKT and Kind, Kind2, ... are matching types?
问:
按照此链接中的示例进行HKT.ts我们在下面:
export function lift<F extends URIS2>(F: Functor2<F>): <A, B>(f: (a: A) => B) => <E>(fa: Kind2<F, E, A>) => Kind2<F, E, B>
export function lift<F extends URIS>(F: Functor1<F>): <A, B>(f: (a: A) => B) => (fa: Kind<F, A>) => Kind<F, B>
export function lift<F>(F: Functor<F>): <A, B>(f: (a: A) => B) => (fa: HKT<F, A>) => HKT<F, B>
export function lift<F>(F: Functor<F>): <A, B>(f: (a: A) => B) => (fa: HKT<F, A>) => HKT<F, B> {
return (f) => (fa) => F.map(fa, f)
}
这适用于 ,和 Functors:Identity
Option
Either
const double = (n: number): number => n * 2
const doubleIdentity = lift(I.Functor)(double)
const doubleOption = lift(O.Functor)(double)
const doubleEither = lift(E.Functor)(double)
为什么是最一般和后备的情况。在 和 , , ...,每个的最终类型似乎不匹配!(考虑期权和香港电讯的定义)export function lift<F>(F: Functor<F>): <A, B>(f: (a: A) => B) => (fa: HKT<F, A>) => HKT<F, B>
HKT
Kind
Kind2
此链接中有一篇来自 fp-ts 作者的文章,但在那里,作者已将所有属性添加到 但实际上并没有做同样的事情。HKT
Option
fp-ts
有人可以解释一下这个电梯的功能类型和匹配方式吗?Kind
Kind2
HKT
答: 暂无答案
评论