boot2

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

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


      1 ; number->string returns a fresh string with the requested representation.
      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 (if (string? (number->string 42)) 0 (sys-exit 20))
     11 (if (not (bytevector? (number->string 42))) 0 (sys-exit 21))
     12 
     13 (if (= 0       (string->number "0"))        0 (sys-exit 6))
     14 (if (= 1       (string->number "1"))        0 (sys-exit 7))
     15 (if (= 42      (string->number "42"))       0 (sys-exit 8))
     16 (if (= -7      (string->number "-7"))       0 (sys-exit 9))
     17 (if (= 1234567 (string->number "1234567"))  0 (sys-exit 10))
     18 
     19 (if (not (string->number ""))    0 (sys-exit 11))
     20 (if (not (string->number "-"))   0 (sys-exit 12))
     21 (if (not (string->number "abc")) 0 (sys-exit 13))
     22 (if (not (string->number "12a")) 0 (sys-exit 14))
     23 (if (not (string->number "1.5")) 0 (sys-exit 15))
     24 
     25 (if (= 99  (string->number (number->string 99)))  0 (sys-exit 16))
     26 (if (= -99 (string->number (number->string -99))) 0 (sys-exit 17))
     27 
     28 ; Micro supports radix 10 and radix 16 and rejects all others.
     29 (if (bytevector=? "42" (number->string 42 10)) 0 (sys-exit 18))
     30 (if (= 42 (string->number "42" 10))            0 (sys-exit 19))
     31 (if (string=? "ff" (number->string 255 16)) 0 (sys-exit 22))
     32 (if (string=? "-ff" (number->string -255 16)) 0 (sys-exit 23))
     33 (if (= 255 (string->number "ff" 16)) 0 (sys-exit 24))
     34 (if (= -255 (string->number "-ff" 16)) 0 (sys-exit 25))
     35 
     36 (sys-exit 0)