Source/Packages

Compiler.IntegerLiteral

packages/compiler/src/Compiler/IntegerLiteral.alpha

903 lines95 declarations31.8 KiBSHA-256 578f5c4899f4

def · lines 623–664

integerLiteralFoldDigits

Full file
623def integerLiteralFoldDigits =
624  (lambda unrestricted radix : (family IntegerLiteralRadix) .
625    (lambda unrestricted digits : Bytes .
626      (app
627        (bytes-eliminate
628          (lambda unrestricted remaining : Bytes .
629            (pi unrestricted accumulator : (family ModelWord64) . (family IntegerLiteralFoldResult)))
630          (lambda unrestricted accumulator : (family ModelWord64) .
631            (constructor IntegerLiteralFoldResult IntegerLiteralFoldValue accumulator))
632          (lambda unrestricted head : Byte .
633            (lambda unrestricted tail : Bytes .
634              (lambda unrestricted continue : (pi unrestricted accumulator : (family ModelWord64) . (family IntegerLiteralFoldResult)) .
635                (lambda unrestricted accumulator : (family ModelWord64) .
636                  (eliminate
637                    IntegerLiteralDigitResult
638                    (lambda unrestricted current : (family IntegerLiteralDigitResult) .
639                      (family IntegerLiteralFoldResult))
640                    (integerLiteralDecodeDigit radix head)
641                    (branch
642                      IntegerLiteralDigitValue
643                      digit
644                      .
645                      (eliminate
646                        IntegerLiteralU64StepResult
647                        (lambda unrestricted current : (family IntegerLiteralU64StepResult) .
648                          (family IntegerLiteralFoldResult))
649                        (integerLiteralStep radix accumulator (nat-to-byte digit))
650                        (branch IntegerLiteralU64StepSucceeded next . (continue next))
651                        (branch
652                          IntegerLiteralU64StepFailed
653                          .
654                          (constructor
655                            IntegerLiteralFoldResult
656                            IntegerLiteralFoldFailed
657                            (constructor IntegerLiteralFailure IntegerLiteralOutOfRange)))))
658                    (branch
659                      IntegerLiteralDigitFailed
660                      failure
661                      .
662                      (constructor IntegerLiteralFoldResult IntegerLiteralFoldFailed failure)))))))
663          digits)
664        integerLiteralZero)))

The compiler supplied declaration spans and resolved links from this source snapshot. This page does not assert that this file belongs to a checked closure.