diff options
author | braxtonhall | 2022-10-23 19:27:49 +0000 |
---|---|---|
committer | braxtonhall | 2022-10-23 19:27:49 +0000 |
commit | 77ffde450e92ffe6527c35ffc2383b17d4c04f68 (patch) | |
tree | 65a560a18f1952114727e05872fce3f149e660e4 /entries/braxtonhall/types/index.ts | |
parent | b5b18e46e3a5c4daaa3b4613395b1a216a47bc17 (diff) |
Rename directory to use GitHub ID
Diffstat (limited to 'entries/braxtonhall/types/index.ts')
-rw-r--r-- | entries/braxtonhall/types/index.ts | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/entries/braxtonhall/types/index.ts b/entries/braxtonhall/types/index.ts new file mode 100644 index 0000000..11f4086 --- /dev/null +++ b/entries/braxtonhall/types/index.ts @@ -0,0 +1,18 @@ +type Zero = "😰"; + +type Succ<N> = {prev: N}; + +type Prev<N> = N extends Succ<infer P> ? P : never; + +type Add<A, B> = B extends Zero ? A : Succ<Add<A, Prev<B>>>; + +type _Fib<N, AccumulatorA, AccumulatorB> = + N extends Zero + ? AccumulatorA + : N extends Succ<Zero> + ? AccumulatorB + : _Fib<Prev<N>, AccumulatorB, Add<AccumulatorA, AccumulatorB>>; + +type Fib<N> = _Fib<N, Zero, Succ<Zero>>; + +export type {Zero, Succ, Fib}; |