108-variadic-arith.scm (3404B)
1 ; Variadic arity for the arithmetic / comparison / bitwise primitives. 2 ; + * bit-and bit-or bit-xor accept 0+ args; - accepts 1+ (unary 3 ; negate); = < > accept 2+ args and chain pairwise. 4 5 ;; --- + (0+) ------------------------------------------------------------- 6 (if (= 0 (+)) 0 (sys-exit 1)) 7 (if (= 7 (+ 7)) 0 (sys-exit 2)) 8 (if (= 5 (+ 2 3)) 0 (sys-exit 3)) 9 (if (= 10 (+ 1 2 3 4)) 0 (sys-exit 4)) 10 (if (= 0 (+ 1 -1 2 -2)) 0 (sys-exit 5)) 11 12 ;; --- - (1+) ------------------------------------------------------------- 13 (if (= -5 (- 5)) 0 (sys-exit 6)) 14 (if (= 5 (- -5)) 0 (sys-exit 7)) 15 (if (= 1 (- 3 2)) 0 (sys-exit 8)) 16 (if (= 4 (- 10 1 2 3)) 0 (sys-exit 9)) 17 (if (= -6 (- 0 1 2 3)) 0 (sys-exit 10)) 18 19 ;; --- * (0+) ------------------------------------------------------------- 20 (if (= 1 (*)) 0 (sys-exit 11)) 21 (if (= 9 (* 9)) 0 (sys-exit 12)) 22 (if (= 6 (* 2 3)) 0 (sys-exit 13)) 23 (if (= 24 (* 2 3 4)) 0 (sys-exit 14)) 24 (if (= 0 (* 1 2 0 3)) 0 (sys-exit 15)) 25 (if (= -24 (* -1 2 3 4)) 0 (sys-exit 16)) 26 27 ;; --- = (2+) ------------------------------------------------------------- 28 (if (= 1 1) 0 (sys-exit 17)) 29 (if (not (= 1 2)) 0 (sys-exit 18)) 30 (if (= 7 7 7) 0 (sys-exit 19)) 31 (if (not (= 7 7 8)) 0 (sys-exit 20)) 32 (if (not (= 7 8 7)) 0 (sys-exit 21)) 33 (if (= 0 0 0 0) 0 (sys-exit 22)) 34 35 ;; --- < (2+) ------------------------------------------------------------- 36 (if (< 1 2) 0 (sys-exit 23)) 37 (if (not (< 2 1)) 0 (sys-exit 24)) 38 (if (not (< 1 1)) 0 (sys-exit 25)) 39 (if (< 1 2 3) 0 (sys-exit 26)) 40 (if (not (< 1 2 2)) 0 (sys-exit 27)) 41 (if (not (< 1 3 2)) 0 (sys-exit 28)) 42 (if (< -3 -2 -1 0 1) 0 (sys-exit 29)) 43 44 ;; --- > (2+) ------------------------------------------------------------- 45 (if (> 2 1) 0 (sys-exit 30)) 46 (if (not (> 1 2)) 0 (sys-exit 31)) 47 (if (> 3 2 1) 0 (sys-exit 32)) 48 (if (not (> 3 2 2)) 0 (sys-exit 33)) 49 (if (not (> 3 1 2)) 0 (sys-exit 34)) 50 (if (> 5 4 3 2 1 0 -1) 0 (sys-exit 35)) 51 52 ;; --- bit-and (0+, identity -1) ------------------------------------------ 53 (if (= -1 (bit-and)) 0 (sys-exit 36)) 54 (if (= #x33 (bit-and #x33)) 0 (sys-exit 37)) 55 (if (= #x03 (bit-and #x33 #x0f)) 0 (sys-exit 38)) 56 (if (= #x01 (bit-and #x33 #x0f #x05)) 0 (sys-exit 39)) 57 (if (= 0 (bit-and #x0f #xf0)) 0 (sys-exit 40)) 58 59 ;; --- bit-or (0+, identity 0) -------------------------------------------- 60 (if (= 0 (bit-or)) 0 (sys-exit 41)) 61 (if (= #x21 (bit-or #x21)) 0 (sys-exit 42)) 62 (if (= #x3f (bit-or #x33 #x0f)) 0 (sys-exit 43)) 63 (if (= #x37 (bit-or #x33 #x04 #x10)) 0 (sys-exit 44)) 64 (if (= 7 (bit-or 1 2 4)) 0 (sys-exit 45)) 65 66 ;; --- bit-xor (0+, identity 0) ------------------------------------------- 67 (if (= 0 (bit-xor)) 0 (sys-exit 46)) 68 (if (= #x55 (bit-xor #x55)) 0 (sys-exit 47)) 69 (if (= #x33 (bit-xor #x55 #x66)) 0 (sys-exit 48)) 70 (if (= 0 (bit-xor #x0f #x0f)) 0 (sys-exit 49)) 71 (if (= #x55 (bit-xor #x0f #x33 #x66 #x0f)) 0 (sys-exit 50)) 72 73 (sys-exit 0)