From 5cb761ce1b6e2a354ef83d0ca8ec28a318e90ac6 Mon Sep 17 00:00:00 2001 From: gvergnaud Date: Sun, 16 Jul 2023 19:27:21 +0200 Subject: [PATCH] Add more examples --- src/internals/core/Core3.ts | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/src/internals/core/Core3.ts b/src/internals/core/Core3.ts index 3c3d08d..cb3402c 100644 --- a/src/internals/core/Core3.ts +++ b/src/internals/core/Core3.ts @@ -232,13 +232,13 @@ type t8 = $; * Higher order */ -interface Map extends Fn<[Fn<[A], B>, A[]], B[]> { +interface Map extends Fn<[Fn<[A], B>, A[]], B[]> { return: Args extends [infer fn extends Fn, infer tuple] ? { [key in keyof tuple]: $ } : never; } -type t9 = $, $.partial, [2, 4, 6, 8, 10]>; +type t9 = $, $.partial, [2, 4, 6, 8, 10]>; // ^? [1, 2, 3, 4, 5] type test9 = Expect>; @@ -259,23 +259,22 @@ type ReduceImpl = xs extends [ ? ReduceImpl, rest> : acc; -interface Reduce - extends Fn<[Fn<[B, A], B>, B, A[]], B> { +interface Reduce extends Fn<[Fn<[B, A], B>, B, A[]], B> { return: Args extends [infer fn extends Fn, infer acc, infer tuple] ? ReduceImpl : never; } -type t11 = $, Add, 0, [2, 4, 6, 8, 10]>; +type t11 = $, Add, 0, [2, 4, 6, 8, 10]>; // ^? 30 type test11 = Expect>; -type t12 = $, Mul, 1, [2, 4, 6, 8, 10]>; +type t12 = $, Mul, 1, [2, 4, 6, 8, 10]>; // ^? 3840 type test12 = Expect>; // @ts-expect-error -type t13 = $, Mul, 1, ["2", "4", "6", "8", "10"]>; +type t13 = $, Mul, 1, ["2", "4", "6", "8", "10"]>; // ~~~~~~~~~~~~~~~~~~~~~~~~~~ ❌ // @ts-expect-error @@ -335,18 +334,27 @@ type t18 = Test<"10">; // ^? 110 type test18 = Expect>; -type MapAdd1 = $.partial, $.partial>; -type Sum = $.partial, Add, 0>; +type Sum = $.partial, Add, 0>; type t19 = $< // ^? $.pipe< - MapAdd1, + $.partial, $.partial>, + $.partial< + Map, + $.pipe< + $.partial, + $.partial, + ToString, + $.partial, + ToNumber + > + >, Sum, ToString, $.partial, ToNumber, - $.partial, + $.partial, $.partial, ToString, $.partial, @@ -354,4 +362,4 @@ type t19 = $< >, [1, 2, 3, 4] >; -type test19 = Expect>; +type test19 = Expect>;