-- Normalisieren, d.h., führende Nullen entfernen und Ziffern in die Basis "modulieren" type Carry = int norm :: [Int] -> ArbInt norm = Norm . dropWhile (==0) . addCarry . foldr carry (0,[]) -- Eine Ziffer "modulieren" und ein Teilergebnistupel liefern carry :: Digit -> (Carry,[Digit]) -> (Carry,[Digit]) carry x (c,xs) = ((x + c) div base, (x + c) mod base : xs) isZero :: ArbInt -> Bool isZero = null . digits