I'm reasonably proficient in Typescript although I wouldn't call myself an expert in type systems. But I'm not a beginner either.<p>However, I read though the readme and I have no idea what the usefulness of this is. Can anyone explain, in simple terms, some practical use cases for this?
I wonder if there is any relationship between HKT and C#/Rust generics, from my perspective I always see HKT as "A type that accepts types that generates another type" and generic as "A functor that accepts types that generates another type". That makes me wonder if types and functors are exchangable.
I wonder how this differs from HKT's implementation in fp-ts 2 and Effect-TS.<p><a href="https://gcanti.github.io/fp-ts/modules/HKT.ts.html" rel="nofollow">https://gcanti.github.io/fp-ts/modules/HKT.ts.html</a>
Looking forward to a proper monad lib in Typescript!<p>However, I can only assume that molding/abusing types like this might have a big - if not huge - impact on compilation times...<p>I've created a template-like generic type that allows you compose multiple kinds and replace any property of an object with a function returning the same type as the property, and vscode has such a hard time inferring types that intellisense has become unusable in this context.<p>Curious to see how this will turn out.
Higher kinded types always remind me of regex. People think “I know, I’ll use HKT to solve this problem”. Now they have two problems.<p>These techniques can be way overkill for someone until they are dealing with an overwhelming amount of types to unify. It’ll seem like a terrible idea until that obstacle is encountered.