Nice job ! Gaining so much from this article 😃
Only one question about Curry V5, it seems not to support following usage:
curried09('Jane')(26)(true)('JJ', 'Jini')
-> Cannot invoke an expression whose type lacks a call signature. Type 'Boolean' has no compatible call signatures
which is the case we expect to solve in Curry V1 section.
I try to do further check when Drop<Length<T>, P> doesn’t extend [any, …any[]], in this branch Drop<Length<T>, P> will produce type string[], but I find there is no way to tell if P has already been consumed based on string[], which extends […any[]] and any[] but not [].
Hope to know any thought about this, thanks a lot !