boot2

Playing with the boostrap
git clone https://git.ryansepassi.com/git/boot2.git
Log | Files | Refs | README

074-num-str-conv.scm (1549B)


      1 ; number->string returns a fresh bytevector with the decimal repr.
      2 ; string->number parses decimal (optional leading -) into a fixnum,
      3 ; or #f on garbage / empty input.
      4 
      5 (if (bytevector=? "0"       (number->string 0))       0 (sys-exit 1))
      6 (if (bytevector=? "1"       (number->string 1))       0 (sys-exit 2))
      7 (if (bytevector=? "42"      (number->string 42))      0 (sys-exit 3))
      8 (if (bytevector=? "-7"      (number->string -7))      0 (sys-exit 4))
      9 (if (bytevector=? "1234567" (number->string 1234567)) 0 (sys-exit 5))
     10 
     11 (if (= 0       (string->number "0"))        0 (sys-exit 6))
     12 (if (= 1       (string->number "1"))        0 (sys-exit 7))
     13 (if (= 42      (string->number "42"))       0 (sys-exit 8))
     14 (if (= -7      (string->number "-7"))       0 (sys-exit 9))
     15 (if (= 1234567 (string->number "1234567"))  0 (sys-exit 10))
     16 
     17 (if (not (string->number ""))    0 (sys-exit 11))
     18 (if (not (string->number "-"))   0 (sys-exit 12))
     19 (if (not (string->number "abc")) 0 (sys-exit 13))
     20 (if (not (string->number "12a")) 0 (sys-exit 14))
     21 (if (not (string->number "1.5")) 0 (sys-exit 15))
     22 
     23 (if (= 99  (string->number (number->string 99)))  0 (sys-exit 16))
     24 (if (= -99 (string->number (number->string -99))) 0 (sys-exit 17))
     25 
     26 ; Radix arg is part of the surface (LISP.md). Impl is decimal-only for
     27 ; now; passing radix=10 must match the no-radix call. Other radices are
     28 ; not yet pinned by tests since the impl ignores them.
     29 (if (bytevector=? "42" (number->string 42 10)) 0 (sys-exit 18))
     30 (if (= 42 (string->number "42" 10))            0 (sys-exit 19))
     31 
     32 (sys-exit 0)