Hallo 1unitedpower,
by the way braucht man binaryLength gar nicht. Das verleitet nur zum cheaten. Man muss nur binaryToNumber etwas umgestalten:
function binaryToNumber(n : BNat) : number {
return b2n(0, n);
function b2n(val: number, n: BNat) : number {
if (n.tag === 'zero') return val;
return b2n(2*val + (n.tag === 'B1' ? 1 : 0), n.pred);
}
}
Die Abfrage n.tag === 'zero'
statt n === zero
hilft TypeScript bei der korrekten Typdiskriminierung. Ich könnte sonst n.pred
nicht verwenden.
Warum hast Du eigentlich Zero, U0, B0 und B1 als interface definiert und nicht als type? Ich habe ja von TypeScript fast gar keine Ahnung...
Rolf
--
sumpsi - posui - obstruxi
sumpsi - posui - obstruxi