Skip to content

DigitList

Michael Poteat edited this page Feb 27, 2023 · 3 revisions

hkt-toolbelt / DigitList

Namespace: DigitList

Interfaces

Type Aliases

DigitList

Ƭ DigitList: readonly Digit[]

Defined in

digit-list/digit-list.ts:3


_$add

Ƭ _$add<A, B, SUM, RESULT>: RESULT

Type parameters

Name Type
A extends DigitList
B extends DigitList
SUM _$add2<A, B>
RESULT SUM extends [] ? [Zero] : SUM

Defined in

digit-list/add.ts:24


_$compare

Ƭ _$compare<A, B, RESULT>: RESULT

Type parameters

Name Type
A extends DigitList
B extends DigitList
RESULT _$compare2<A, B>

Defined in

digit-list/compare.ts:33


_$decrement

Ƭ _$decrement<A>: _$trim<A extends "0"[] ? ["0"] : _$decrement2<A>>

Type parameters

Name Type
A extends DigitList

Defined in

digit-list/decrement.ts:25


_$divide

Ƭ _$divide<A, B, OPERATION>: B extends [Zero] ? [Zero] : B extends ["1"] ? OPERATION extends "DIVIDE" ? A : [Zero] : _$divide2<A, B, OPERATION>

Type parameters

Name Type
A extends DigitList
B extends DigitList
OPERATION extends "DIVIDE" | "MODULO" = "DIVIDE"

Defined in

digit-list/divide.ts:89


_$divideBySubtraction

Ƭ _$divideBySubtraction<A, B, OPERATION>: B extends [Zero] ? [Zero] : B extends ["1"] ? OPERATION extends "DIVIDE" ? A : [Zero] : _$divideBySubtraction2<A, B, OPERATION>

Type parameters

Name Type
A extends DigitList
B extends DigitList
OPERATION extends "DIVIDE" | "MODULO" = "DIVIDE"

Defined in

digit-list/divide-by-subtraction.ts:31


_$first

Ƭ _$first<T>: T extends [] ? Zero : T extends [infer X, ...unknown[]] ? X : Zero

Type parameters

Name Type
T extends DigitList

Defined in

digit-list/first.ts:3


_$increment

Ƭ _$increment<A, CARRY, OUTPUT, A_LAST, NEXT_A, INCREMENT, NEXT_CARRY, NEXT_OUTPUT, FINAL_RESULT, SHORT_CIRCUIT>: A extends [] ? FINAL_RESULT : CARRY extends "0" ? SHORT_CIRCUIT : _$increment<NEXT_A, NEXT_CARRY, NEXT_OUTPUT>

Type parameters

Name Type
A extends DigitList
CARRY extends Digit = "1"
OUTPUT extends DigitList = []
A_LAST extends Digit = _$last<A>
NEXT_A extends DigitList = _$pop<A>
INCREMENT extends Digit = CARRY extends "1" ? _$increment<A_LAST> : A_LAST
NEXT_CARRY extends Digit = CARRY extends "1" ? _$incrementTens<A_LAST> : "0"
NEXT_OUTPUT extends DigitList = [INCREMENT, ...OUTPUT]
FINAL_RESULT extends DigitList = CARRY extends "1" ? [CARRY, ...OUTPUT] : OUTPUT
SHORT_CIRCUIT extends DigitList = [...A, ...OUTPUT]

Defined in

digit-list/increment.ts:3


_$isEven

Ƭ _$isEven<T, LAST>: LAST extends Zero | "2" | "4" | "6" | "8" ? true : false

Type parameters

Name Type
T extends DigitList
LAST extends Digit = _$last<T>

Defined in

digit-list/is-even.ts:3


_$isOdd

Ƭ _$isOdd<T, LAST>: LAST extends "1" | "3" | "5" | "7" | "9" ? true : false

Type parameters

Name Type
T extends DigitList
LAST extends Digit = _$last<T>

Defined in

digit-list/is-odd.ts:3


_$last

Ƭ _$last<T>: T extends [] ? Zero : T extends [...unknown[], infer X] ? X : Zero

Type parameters

Name Type
T extends DigitList

Defined in

digit-list/last.ts:3


_$modulo

Ƭ _$modulo<A, B>: _$divide<A, B, "MODULO">

Type parameters

Name Type
A extends DigitList
B extends DigitList

Defined in

digit-list/modulo.ts:3


_$multiply

Ƭ _$multiply<A, B>: _$trim<_$cast<_$multiply2<A, B>, DigitList>>

Type parameters

Name Type
A extends DigitList
B extends DigitList

Defined in

digit-list/multiply.ts:17


_$multiply2

Ƭ _$multiply2<A, B, SCALE, SUM, LAST_A, POP_A, MUL, MUL_SCALE, ADD, NEXT_SCALE, DONE>: DONE extends true ? SUM : _$multiply2<POP_A, B, NEXT_SCALE, ADD>

Type parameters

Name Type
A extends DigitList
B extends DigitList
SCALE extends DigitList = []
SUM extends DigitList = []
LAST_A extends Digit = _$last<A>
POP_A extends DigitList = _$pop<A>
MUL extends DigitList = _$multiplyDigit<B, LAST_A>
MUL_SCALE extends DigitList = [...MUL, ...SCALE]
ADD extends DigitList = _$add<SUM, MUL_SCALE>
NEXT_SCALE extends DigitList = [Zero, ...SCALE]
DONE extends boolean = A extends [] ? true : false

Defined in

digit-list/multiply.ts:3


_$multiplyDigit

Ƭ _$multiplyDigit<A, B>: B extends "0" ? ["0"] : _$multiplyDigit2<A, B>

Type parameters

Name Type
A extends DigitList
B extends Digit

Defined in

digit-list/multiply-digit.ts:19


_$pop

Ƭ _$pop<T>: T extends [] ? [] : T extends [...(infer X), unknown] ? X : []

Type parameters

Name Type
T extends DigitList

Defined in

digit-list/pop.ts:3


_$shift

Ƭ _$shift<T>: T extends [] ? [] : T extends [unknown, ...(infer X)] ? X : []

Type parameters

Name Type
T extends DigitList

Defined in

digit-list/shift.ts:3


_$subtract

Ƭ _$subtract<A, B>: _$trim<_$subtract2<A, B>>

Type parameters

Name Type
A extends DigitList
B extends DigitList

Defined in

digit-list/subtract.ts:24


_$toString

Ƭ _$toString<T, JOIN, RESULT>: RESULT

Type parameters

Name Type
T extends DigitList
JOIN _$toString2<T>
RESULT JOIN extends "" ? "0" : JOIN

Defined in

digit-list/to-string.ts:10


_$trim

Ƭ _$trim<A, TRIM, OUTPUT>: OUTPUT

Type parameters

Name Type
A extends DigitList
TRIM extends DigitList = _$trim2<A>
OUTPUT extends DigitList = TRIM extends [] ? ["0"] : TRIM

Defined in

digit-list/trim.ts:10

Clone this wiki locally