diff --git a/scheme/ikarus.apply.ss b/scheme/ikarus.apply.ss index e215e09..a98124a 100644 --- a/scheme/ikarus.apply.ss +++ b/scheme/ikarus.apply.ss @@ -25,8 +25,8 @@ (let () (define (err f ls) (if (procedure? f) - (error 'apply "not a list" ls) - (error 'apply "not a procedure" f))) + (die 'apply "not a list" ls) + (die 'apply "not a procedure" f))) (define (fixandgo f a0 a1 ls p d) (cond [(null? ($cdr d)) diff --git a/scheme/ikarus.boot.prebuilt b/scheme/ikarus.boot.prebuilt index fbb7d5b..017da69 100644 Binary files a/scheme/ikarus.boot.prebuilt and b/scheme/ikarus.boot.prebuilt differ diff --git a/scheme/ikarus.bytevectors.ss b/scheme/ikarus.bytevectors.ss index 3fc9742..e83748d 100644 --- a/scheme/ikarus.bytevectors.ss +++ b/scheme/ikarus.bytevectors.ss @@ -88,18 +88,18 @@ [(k) (if (and (fixnum? k) ($fx>= k 0)) ($make-bytevector k) - (error 'make-bytevector "not a valid size" k))] + (die 'make-bytevector "not a valid size" k))] [(k fill) (if (and (fixnum? fill) ($fx<= -128 fill) ($fx<= fill 255)) ($bytevector-fill (make-bytevector k) 0 k fill) - (error 'make-bytevector "not a valid fill" fill))])) + (die 'make-bytevector "not a valid fill" fill))])) (define bytevector-fill! (lambda (x fill) (unless (bytevector? x) - (error 'bytevector-fill! "not a bytevector" x)) + (die 'bytevector-fill! "not a bytevector" x)) (unless (and (fixnum? fill) ($fx<= -128 fill) ($fx<= fill 255)) - (error 'bytevector-fill! "not a valid fill" fill)) + (die 'bytevector-fill! "not a valid fill" fill)) ($bytevector-fill x 0 ($bytevector-length x) fill))) @@ -107,23 +107,23 @@ (lambda (x) (if (bytevector? x) ($bytevector-length x) - (error 'bytevector-length "not a bytevector" x)))) + (die 'bytevector-length "not a bytevector" x)))) (define bytevector-s8-ref (lambda (x i) (if (bytevector? x) (if (and (fixnum? i) ($fx<= 0 i) ($fx< i ($bytevector-length x))) ($bytevector-s8-ref x i) - (error 'bytevector-s8-ref "invalid index" i x)) - (error 'bytevector-s8-ref "not a bytevector" x)))) + (die 'bytevector-s8-ref "invalid index" i x)) + (die 'bytevector-s8-ref "not a bytevector" x)))) (define bytevector-u8-ref (lambda (x i) (if (bytevector? x) (if (and (fixnum? i) ($fx<= 0 i) ($fx< i ($bytevector-length x))) ($bytevector-u8-ref x i) - (error 'bytevector-u8-ref "invalid index" i x)) - (error 'bytevector-u8-ref "not a bytevector" x)))) + (die 'bytevector-u8-ref "invalid index" i x)) + (die 'bytevector-u8-ref "not a bytevector" x)))) (define bytevector-s8-set! @@ -132,9 +132,9 @@ (if (and (fixnum? i) ($fx<= 0 i) ($fx< i ($bytevector-length x))) (if (and (fixnum? v) ($fx<= -128 v) ($fx<= v 127)) ($bytevector-set! x i v) - (error 'bytevector-s8-set! "not a byte" v)) - (error 'bytevector-s8-set! "invalid index" i x)) - (error 'bytevector-s8-set! "not a bytevector" x)))) + (die 'bytevector-s8-set! "not a byte" v)) + (die 'bytevector-s8-set! "invalid index" i x)) + (die 'bytevector-s8-set! "not a bytevector" x)))) (define bytevector-u8-set! (lambda (x i v) @@ -142,9 +142,9 @@ (if (and (fixnum? i) ($fx<= 0 i) ($fx< i ($bytevector-length x))) (if (and (fixnum? v) ($fx<= 0 v) ($fx<= v 255)) ($bytevector-set! x i v) - (error 'bytevector-u8-set! "not an octet" v)) - (error 'bytevector-u8-set! "invalid index" i x)) - (error 'bytevector-u8-set! "not a bytevector" x)))) + (die 'bytevector-u8-set! "not an octet" v)) + (die 'bytevector-u8-set! "invalid index" i x)) + (die 'bytevector-u8-set! "not a bytevector" x)))) (define bytevector-u16-native-ref ;;; HARDCODED (lambda (x i) @@ -156,8 +156,8 @@ ($fxlogor ($fxsll ($bytevector-u8-ref x i) 8) ($bytevector-u8-ref x ($fxadd1 i))) - (error 'bytevector-u16-native-ref "invalid index" i)) - (error 'bytevector-u16-native-ref "not a bytevector" x)))) + (die 'bytevector-u16-native-ref "invalid index" i)) + (die 'bytevector-u16-native-ref "not a bytevector" x)))) (define bytevector-u16-native-set! ;;; HARDCODED @@ -173,9 +173,9 @@ (begin ($bytevector-set! x i ($fxsra n 8)) ($bytevector-set! x ($fxadd1 i) n)) - (error 'bytevector-u16-native-set! "invalid index" i)) - (error 'bytevector-u16-native-set! "invalid value" n)) - (error 'bytevector-u16-native-set! "not a bytevector" x)))) + (die 'bytevector-u16-native-set! "invalid index" i)) + (die 'bytevector-u16-native-set! "invalid value" n)) + (die 'bytevector-u16-native-set! "not a bytevector" x)))) (define bytevector-s16-native-set! ;;; HARDCODED (lambda (x i n) @@ -190,9 +190,9 @@ (begin ($bytevector-set! x i ($fxsra n 8)) ($bytevector-set! x ($fxadd1 i) n)) - (error 'bytevector-s16-native-set! "invalid index" i)) - (error 'bytevector-s16-native-set! "invalid value" n)) - (error 'bytevector-s16-native-set! "not a bytevector" x)))) + (die 'bytevector-s16-native-set! "invalid index" i)) + (die 'bytevector-s16-native-set! "invalid value" n)) + (die 'bytevector-s16-native-set! "not a bytevector" x)))) (define bytevector-s16-native-ref ;;; HARDCODED (lambda (x i) @@ -204,8 +204,8 @@ ($fxlogor ($fxsll ($bytevector-s8-ref x i) 8) ($bytevector-u8-ref x ($fxadd1 i))) - (error 'bytevector-s16-native-ref "invalid index" i)) - (error 'bytevector-s16-native-ref "not a bytevector" x)))) + (die 'bytevector-s16-native-ref "invalid index" i)) + (die 'bytevector-s16-native-ref "not a bytevector" x)))) (define bytevector-u16-ref (lambda (x i end) @@ -222,9 +222,9 @@ ($fxlogor ($fxsll ($bytevector-u8-ref x (fxadd1 i)) 8) ($bytevector-u8-ref x i))] - [else (error 'bytevector-u16-ref "invalid endianness" end)]) - (error 'bytevector-u16-ref "invalid index" i)) - (error 'bytevector-u16-ref "not a bytevector" x)))) + [else (die 'bytevector-u16-ref "invalid endianness" end)]) + (die 'bytevector-u16-ref "invalid index" i)) + (die 'bytevector-u16-ref "not a bytevector" x)))) (define bytevector-u32-ref (lambda (x i end) @@ -247,9 +247,9 @@ ($fxlogor ($fxsll ($bytevector-u8-ref x ($fx+ i 1)) 8) ($bytevector-u8-ref x i))))] - [else (error 'bytevector-u32-ref "invalid endianness" end)]) - (error 'bytevector-u32-ref "invalid index" i)) - (error 'bytevector-u32-ref "not a bytevector" x)))) + [else (die 'bytevector-u32-ref "invalid endianness" end)]) + (die 'bytevector-u32-ref "invalid index" i)) + (die 'bytevector-u32-ref "not a bytevector" x)))) (define bytevector-u32-native-ref (lambda (x i) @@ -264,8 +264,8 @@ ($fxlogor ($fxsll ($bytevector-u8-ref x ($fx+ i 2)) 8) ($bytevector-u8-ref x ($fx+ i 3))))) - (error 'bytevector-u32-native-ref "invalid index" i)) - (error 'bytevector-u32-native-ref "not a bytevector" x)))) + (die 'bytevector-u32-native-ref "invalid index" i)) + (die 'bytevector-u32-native-ref "not a bytevector" x)))) (define bytevector-s32-ref (lambda (x i end) @@ -288,9 +288,9 @@ ($fxlogor ($fxsll ($bytevector-u8-ref x ($fx+ i 1)) 8) ($bytevector-u8-ref x i))))] - [else (error 'bytevector-s32-ref "invalid endianness" end)]) - (error 'bytevector-s32-ref "invalid index" i)) - (error 'bytevector-s32-ref "not a bytevector" x)))) + [else (die 'bytevector-s32-ref "invalid endianness" end)]) + (die 'bytevector-s32-ref "invalid index" i)) + (die 'bytevector-s32-ref "not a bytevector" x)))) (define bytevector-s32-native-ref (lambda (x i) @@ -305,8 +305,8 @@ ($fxlogor ($fxsll ($bytevector-u8-ref x ($fx+ i 2)) 8) ($bytevector-u8-ref x ($fx+ i 3))))) - (error 'bytevector-s32-native-ref "invalid index" i)) - (error 'bytevector-s32-native-ref "not a bytevector" x)))) + (die 'bytevector-s32-native-ref "invalid index" i)) + (die 'bytevector-s32-native-ref "not a bytevector" x)))) (define bytevector-u16-set! (lambda (x i n end) @@ -324,10 +324,10 @@ [(little) ($bytevector-set! x i n) ($bytevector-set! x ($fxadd1 i) (fxsra n 8))] - [else (error 'bytevector-u16-ref "invalid endianness" end)]) - (error 'bytevector-u16-set! "invalid index" i)) - (error 'bytevector-u16-set! "invalid value" n)) - (error 'bytevector-u16-set! "not a bytevector" x)))) + [else (die 'bytevector-u16-ref "invalid endianness" end)]) + (die 'bytevector-u16-set! "invalid index" i)) + (die 'bytevector-u16-set! "invalid value" n)) + (die 'bytevector-u16-set! "not a bytevector" x)))) (define bytevector-u32-set! @@ -356,10 +356,10 @@ (let ([b (bitwise-and n #xFFFF)]) ($bytevector-set! x ($fx+ i 1) ($fxsra b 8)) ($bytevector-set! x i b))] - [else (error 'bytevector-u32-ref "invalid endianness" end)]) - (error 'bytevector-u32-set! "invalid index" i)) - (error 'bytevector-u32-set! "invalid value" n)) - (error 'bytevector-u32-set! "not a bytevector" x)))) + [else (die 'bytevector-u32-ref "invalid endianness" end)]) + (die 'bytevector-u32-set! "invalid index" i)) + (die 'bytevector-u32-set! "invalid value" n)) + (die 'bytevector-u32-set! "not a bytevector" x)))) (define bytevector-u32-native-set! (lambda (x i n) @@ -380,9 +380,9 @@ (let ([b (bitwise-and n #xFFFF)]) ($bytevector-set! x ($fx+ i 2) ($fxsra b 8)) ($bytevector-set! x ($fx+ i 3) b))) - (error 'bytevector-u32-native-set! "invalid index" i)) - (error 'bytevector-u32-native-set! "invalid value" n)) - (error 'bytevector-u32-native-set! "not a bytevector" x)))) + (die 'bytevector-u32-native-set! "invalid index" i)) + (die 'bytevector-u32-native-set! "invalid value" n)) + (die 'bytevector-u32-native-set! "not a bytevector" x)))) (define bytevector-s32-native-set! @@ -404,9 +404,9 @@ (let ([b (bitwise-and n #xFFFF)]) ($bytevector-set! x ($fx+ i 2) ($fxsra b 8)) ($bytevector-set! x ($fx+ i 3) b))) - (error 'bytevector-s32-native-set! "invalid index" i)) - (error 'bytevector-s32-native-set! "invalid value" n)) - (error 'bytevector-s32-native-set! "not a bytevector" x)))) + (die 'bytevector-s32-native-set! "invalid index" i)) + (die 'bytevector-s32-native-set! "invalid value" n)) + (die 'bytevector-s32-native-set! "not a bytevector" x)))) (define bytevector-s32-set! (lambda (x i n end) @@ -434,10 +434,10 @@ (let ([b (bitwise-and n #xFFFF)]) ($bytevector-set! x ($fx+ i 1) ($fxsra b 8)) ($bytevector-set! x i b))] - [else (error 'bytevector-s32-ref "invalid endianness" end)]) - (error 'bytevector-s32-set! "invalid index" i)) - (error 'bytevector-s32-set! "invalid value" n)) - (error 'bytevector-s32-set! "not a bytevector" x)))) + [else (die 'bytevector-s32-ref "invalid endianness" end)]) + (die 'bytevector-s32-set! "invalid index" i)) + (die 'bytevector-s32-set! "invalid value" n)) + (die 'bytevector-s32-set! "not a bytevector" x)))) (define bytevector-s16-ref (lambda (x i end) @@ -454,9 +454,9 @@ ($fxlogor ($fxsll ($bytevector-s8-ref x (fxadd1 i)) 8) ($bytevector-u8-ref x i))] - [else (error 'bytevector-s16-ref "invalid endianness" end)]) - (error 'bytevector-s16-ref "invalid index" i)) - (error 'bytevector-s16-ref "not a bytevector" x)))) + [else (die 'bytevector-s16-ref "invalid endianness" end)]) + (die 'bytevector-s16-ref "invalid index" i)) + (die 'bytevector-s16-ref "not a bytevector" x)))) (define bytevector-s16-set! (lambda (x i n end) @@ -474,15 +474,15 @@ [(little) ($bytevector-set! x i n) ($bytevector-set! x ($fxadd1 i) (fxsra n 8))] - [else (error 'bytevector-s16-ref "invalid endianness" end)]) - (error 'bytevector-s16-set! "invalid index" i)) - (error 'bytevector-s16-set! "invalid value" n)) - (error 'bytevector-s16-set! "not a bytevector" x)))) + [else (die 'bytevector-s16-ref "invalid endianness" end)]) + (die 'bytevector-s16-set! "invalid index" i)) + (die 'bytevector-s16-set! "invalid value" n)) + (die 'bytevector-s16-set! "not a bytevector" x)))) (define bytevector->u8-list (lambda (x) (unless (bytevector? x) - (error 'bytevector->u8-list "not a bytevector" x)) + (die 'bytevector->u8-list "not a bytevector" x)) (let f ([x x] [i ($bytevector-length x)] [ac '()]) (cond [($fx= i 0) ac] @@ -498,13 +498,13 @@ (if (pair? h) (if (not (eq? h t)) (race ($cdr h) ($cdr t) ls ($fx+ n 2)) - (error 'u8-list->bytevector "circular list" ls)) + (die 'u8-list->bytevector "circular list" ls)) (if (null? h) ($fx+ n 1) - (error 'u8-list->bytevector "not a proper list" ls)))) + (die 'u8-list->bytevector "not a proper list" ls)))) (if (null? h) n - (error 'u8-list->bytevector "not a proper list" ls))))] + (die 'u8-list->bytevector "not a proper list" ls))))] [fill (lambda (s i ls) (cond @@ -512,7 +512,7 @@ [else (let ([c ($car ls)]) (unless (and (fixnum? c) ($fx<= 0 c) ($fx<= c 255)) - (error 'u8-list->bytevector "not an octet" c)) + (die 'u8-list->bytevector "not an octet" c)) ($bytevector-set! s i c) (fill s ($fxadd1 i) (cdr ls)))]))]) (lambda (ls) @@ -523,7 +523,7 @@ (define bytevector-copy (lambda (src) (unless (bytevector? src) - (error 'bytevector-copy "not a bytevector" src)) + (die 'bytevector-copy "not a bytevector" src)) (let ([n ($bytevector-length src)]) (let f ([src src] [dst ($make-bytevector n)] [i 0] [n n]) (cond @@ -535,9 +535,9 @@ (define bytevector=? (lambda (x y) (unless (bytevector? x) - (error 'bytevector=? "not a bytevector" x)) + (die 'bytevector=? "not a bytevector" x)) (unless (bytevector? y) - (error 'bytevector=? "not a bytevector" y)) + (die 'bytevector=? "not a bytevector" y)) (let ([n ($bytevector-length x)]) (and ($fx= n ($bytevector-length y)) (let f ([x x] [y y] [i 0] [n n]) @@ -550,21 +550,21 @@ (lambda (src src-start dst dst-start k) (cond [(or (not (fixnum? src-start)) ($fx< src-start 0)) - (error 'bytevector-copy! "not a valid starting index" src-start)] + (die 'bytevector-copy! "not a valid starting index" src-start)] [(or (not (fixnum? dst-start)) ($fx< dst-start 0)) - (error 'bytevector-copy! "not a valid starting index" dst-start)] + (die 'bytevector-copy! "not a valid starting index" dst-start)] [(or (not (fixnum? k)) ($fx< k 0)) - (error 'bytevector-copy! "not a valid length" k)] + (die 'bytevector-copy! "not a valid length" k)] [(not (bytevector? src)) - (error 'bytevector-copy! "not a bytevector" src)] + (die 'bytevector-copy! "not a bytevector" src)] [(not (bytevector? dst)) - (error 'bytevector-copy! "not a bytevector" dst)] + (die 'bytevector-copy! "not a bytevector" dst)] [(let ([n ($fx+ src-start k)]) (or ($fx< n 0) ($fx> n ($bytevector-length src)))) - (error 'bytevector-copy! "out of range" src-start k)] + (die 'bytevector-copy! "out of range" src-start k)] [(let ([n ($fx+ dst-start k)]) (or ($fx< n 0) ($fx> n ($bytevector-length dst)))) - (error 'bytevector-copy! "out of range" dst-start k)] + (die 'bytevector-copy! "out of range" dst-start k)] [(eq? src dst) (cond [($fx< dst-start src-start) @@ -672,33 +672,33 @@ (define bytevector-sint-ref (lambda (x k endianness size) (define who 'bytevector-sint-ref) - (unless (bytevector? x) (error who "not a bytevector" x)) - (unless (and (fixnum? k) ($fx>= k 0)) (error who "invalid index" k)) - (unless (and (fixnum? size) ($fx>= size 1)) (error who "invalid size" size)) + (unless (bytevector? x) (die who "not a bytevector" x)) + (unless (and (fixnum? k) ($fx>= k 0)) (die who "invalid index" k)) + (unless (and (fixnum? size) ($fx>= size 1)) (die who "invalid size" size)) (let ([n ($bytevector-length x)]) - (unless ($fx< k n) (error who "index is out of range" k)) + (unless ($fx< k n) (die who "index is out of range" k)) (let ([end ($fx+ k size)]) (unless (and ($fx>= end 0) ($fx<= end n)) - (error who "out of range" k size)) + (die who "out of range" k size)) (case endianness [(little) (sref-little x k end)] [(big) (sref-big x k end)] - [else (error who "invalid endianness" endianness)]))))) + [else (die who "invalid endianness" endianness)]))))) (define bytevector-uint-ref (lambda (x k endianness size) (define who 'bytevector-uint-ref) - (unless (bytevector? x) (error who "not a bytevector" x)) - (unless (and (fixnum? k) ($fx>= k 0)) (error who "invalid index" k)) - (unless (and (fixnum? size) ($fx>= size 1)) (error who "invalid size" size)) + (unless (bytevector? x) (die who "not a bytevector" x)) + (unless (and (fixnum? k) ($fx>= k 0)) (die who "invalid index" k)) + (unless (and (fixnum? size) ($fx>= size 1)) (die who "invalid size" size)) (let ([n ($bytevector-length x)]) - (unless ($fx< k n) (error who "index is out of range" k)) + (unless ($fx< k n) (die who "index is out of range" k)) (let ([end ($fx+ k size)]) (unless (and ($fx>= end 0) ($fx<= end n)) - (error who "out of range" k size)) + (die who "out of range" k size)) (case endianness [(little) (uref-little x k end)] [(big) (uref-big x k end)] - [else (error who "invalid endianness" endianness)]))))) + [else (die who "invalid endianness" endianness)]))))) (define (bytevector->some-list x k n ls proc who) (cond [($fx= n 0) ls] @@ -708,36 +708,36 @@ [($fx>= i 0) (bytevector->some-list x k i (cons (proc x i n) ls) proc who)] [else - (error who "invalid size" k)]))])) + (die who "invalid size" k)]))])) (define bytevector->uint-list (lambda (x endianness size) (define who 'bytevector->uint-list) - (unless (bytevector? x) (error who "not a bytevector" x)) - (unless (and (fixnum? size) ($fx>= size 1)) (error who "invalid size" size)) + (unless (bytevector? x) (die who "not a bytevector" x)) + (unless (and (fixnum? size) ($fx>= size 1)) (die who "invalid size" size)) (case endianness [(little) (bytevector->some-list x size ($bytevector-length x) '() uref-little 'bytevector->uint-list)] [(big) (bytevector->some-list x size ($bytevector-length x) '() uref-big 'bytevector->uint-list)] - [else (error who "invalid endianness" endianness)]))) + [else (die who "invalid endianness" endianness)]))) (define bytevector->sint-list (lambda (x endianness size) (define who 'bytevector->sint-list) - (unless (bytevector? x) (error who "not a bytevector" x)) - (unless (and (fixnum? size) ($fx>= size 1)) (error who "invalid size" size)) + (unless (bytevector? x) (die who "not a bytevector" x)) + (unless (and (fixnum? size) ($fx>= size 1)) (die who "invalid size" size)) (case endianness [(little) (bytevector->some-list x size ($bytevector-length x) '() sref-little 'bytevector->sint-list)] [(big) (bytevector->some-list x size ($bytevector-length x) '() sref-big 'bytevector->sint-list)] - [else (error who "invalid endianness" endianness)])))) + [else (die who "invalid endianness" endianness)])))) (module (bytevector-uint-set! bytevector-sint-set!) (define (lufx-set! x k1 n k2 who no) (cond [($fx= k1 k2) (unless ($fxzero? n) - (error who "number does not fit" no))] + (die who "number does not fit" no))] [else (lufx-set! x ($fxadd1 k1) ($fxsra n 8) k2 who no) ($bytevector-set! x k1 ($fxlogand n 255))])) @@ -745,7 +745,7 @@ (cond [($fx= k1 k2) (unless ($fx= n -1) ;;; BUG: does not catch all errors - (error who "number does not fit" no))] + (die who "number does not fit" no))] [else (lsfx-set! x ($fxadd1 k1) ($fxsra n 8) k2 who no) ($bytevector-set! x k1 ($fxlogand n 255))])) @@ -753,7 +753,7 @@ (cond [($fx= k1 k2) (unless ($fxzero? n) - (error who "number does not fit" no))] + (die who "number does not fit" no))] [else (let ([k2 ($fxsub1 k2)]) (bufx-set! x k1 ($fxsra n 8) k2 who no) @@ -762,7 +762,7 @@ (cond [($fx= k1 k2) (unless ($fx= n -1) - (error who "number does not fit" no))] + (die who "number does not fit" no))] [else (let ([k2 ($fxsub1 k2)]) (bsfx-set! x k1 ($fxsra n 8) k2 who no) @@ -790,8 +790,8 @@ [(#x00) ;;; borrow is 0, last byte was positive (if ($fx< xi xj) (bv-neg-zero! x xi xj) - (error who "number does not fit" n))] - [else (error 'lbn-neg-copy! "BUG: not handled" c)])] + (die who "number does not fit" n))] + [else (die 'lbn-neg-copy! "BUG: not handled" c)])] [else (let ([c ($fx- ($fx+ 255 ($fxsra c 8)) ($bignum-byte-ref n ni))]) (lbn-neg-copy! x ($fxadd1 xi) n ($fxadd1 ni) xj nj c) @@ -807,8 +807,8 @@ [(#x00) ;;; borrow is 0, last byte was positive (if ($fx< xi xj) (bv-neg-zero! x xi xj) - (error who "number does not fit" n))] - [else (error 'bbn-neg-copy! "BUG: not handled" c)])] + (die who "number does not fit" n))] + [else (die 'bbn-neg-copy! "BUG: not handled" c)])] [else (let ([c ($fx- ($fx+ 255 ($fxsra c 8)) ($bignum-byte-ref n ni))] [xj ($fxsub1 xj)]) @@ -824,7 +824,7 @@ ;;; last byte was positive (bv-zero! x xi xj)] [else - (error who "number does not fit" n)])] + (die who "number does not fit" n)])] [else (let ([c ($bignum-byte-ref n ni)]) (lbn-pos-copy! x ($fxadd1 xi) n ($fxadd1 ni) nj xj c) @@ -839,7 +839,7 @@ ;;; last byte was positive (bv-zero! x xi xj)] [else - (error who "number does not fit" n)])] + (die who "number does not fit" n)])] [else (let ([c ($bignum-byte-ref n ni)] [xj ($fxsub1 xj)]) @@ -860,16 +860,16 @@ (if ($fxzero? ($bignum-byte-ref n i-3)) (let ([i-4 ($fxsub1 i-3)]) (if ($fxzero? ($bignum-byte-ref n i-4)) - (error 'bignum-bytes "BUG: malformed bignum") + (die 'bignum-bytes "BUG: malformed bignum") i-3)) i-2)) i-1)) i)))) (define (make-bytevector-uint-set! who) (lambda (x k n endianness size) - (unless (bytevector? x) (error who "not a bytevector" x)) - (unless (and (fixnum? k) ($fx>= k 0)) (error who "invalid index" k)) - (unless (and (fixnum? size) ($fx>= size 1)) (error who "invalid size" size)) + (unless (bytevector? x) (die who "not a bytevector" x)) + (unless (and (fixnum? k) ($fx>= k 0)) (die who "invalid index" k)) + (unless (and (fixnum? size) ($fx>= size 1)) (die who "invalid size" size)) (case endianness [(little) (cond @@ -883,9 +883,9 @@ [($fx< sz size) (lbn-copy! x k n 0 sz) (bv-zero! x ($fx+ k sz) ($fx+ k size))] - [else (error who "number does not fit" n)])) - (error who "value must be positive" n))] - [else (error who "invalid value argument" n)])] + [else (die who "number does not fit" n)])) + (die who "value must be positive" n))] + [else (die who "invalid value argument" n)])] [(big) (cond [(fixnum? n) (bufx-set! x k n ($fx+ k size) who n)] @@ -898,10 +898,10 @@ [($fx< sz size) (bbn-copy! x ($fx+ k size) n 0 sz) (bv-zero! x k ($fx+ k ($fx- size sz)))] - [else (error who "number does not fit" n)])) - (error who "value must be positive" n))] - [else (error who "invalid value argument" n)])] - [else (error who "invalid endianness" endianness)]))) + [else (die who "number does not fit" n)])) + (die who "value must be positive" n))] + [else (die who "invalid value argument" n)])] + [else (die who "invalid endianness" endianness)]))) (define bytevector-uint-set! (make-bytevector-uint-set! 'bytevector-uint-set!)) (define (make-bytevector-sint-set! who) (define bbn-neg-copy! (make-bbn-neg-copy! who)) @@ -909,9 +909,9 @@ (define lbn-neg-copy! (make-lbn-neg-copy! who)) (define lbn-pos-copy! (make-lbn-pos-copy! who)) (lambda (x k n endianness size) - (unless (bytevector? x) (error who "not a bytevector" x)) - (unless (and (fixnum? k) ($fx>= k 0)) (error who "invalid index" k)) - (unless (and (fixnum? size) ($fx>= size 1)) (error who "invalid size" size)) + (unless (bytevector? x) (die who "not a bytevector" x)) + (unless (and (fixnum? k) ($fx>= k 0)) (die who "invalid index" k)) + (unless (and (fixnum? size) ($fx>= size 1)) (die who "invalid size" size)) (case endianness [(little) (cond @@ -922,13 +922,13 @@ (cond [($fx<= sz size) (lbn-pos-copy! x k n 0 size sz 255)] - [else (error who "number does not fit" n)])) + [else (die who "number does not fit" n)])) (let ([sz (bignum-bytes n)]) (cond [($fx<= sz size) (lbn-neg-copy! x k n 0 size sz 256)] - [else (error who "number does not fit" n)])))] - [else (error who "invalid value argument" n)])] + [else (die who "number does not fit" n)])))] + [else (die who "invalid value argument" n)])] [(big) (cond [(fixnum? n) (bsfx-set! x k n ($fx+ k size) who n)] @@ -938,14 +938,14 @@ (cond [($fx<= sz size) (bbn-pos-copy! x k n 0 size sz 255)] - [else (error who "number does not fit" n)])) + [else (die who "number does not fit" n)])) (let ([sz (bignum-bytes n)]) (cond [($fx<= sz size) (bbn-neg-copy! x k n 0 size sz 256)] - [else (error who "number does not fit" n)])))] - [else (error who "invalid value argument" n)])] - [else (error who "invalid endianness" endianness)]))) + [else (die who "number does not fit" n)])))] + [else (die who "invalid value argument" n)])] + [else (die who "invalid endianness" endianness)]))) (define bytevector-sint-set! (make-bytevector-sint-set! 'bytevector-sint-set!))) (module (uint-list->bytevector sint-list->bytevector) @@ -961,15 +961,15 @@ (bv-set! bv idx a endianness size) (bv-set! bv ($fx+ idx size) ($car h) endianness size) bv) - (error who "circular list" ls)) + (die who "circular list" ls)) (if (null? h) (let ([bv (make-bytevector ($fx+ idx size))]) (bv-set! bv idx a endianness size) bv) - (error who "not a proper list" ls)))) + (die who "not a proper list" ls)))) (if (null? h) (make-bytevector idx) - (error who "not a proper list" ls)))) + (die who "not a proper list" ls)))) (lambda (ls endianness size) (race ls ls ls 0 endianness size))) (define uint-list->bytevector @@ -986,8 +986,8 @@ ($fxzero? ($fxlogand i 7)) ($fx< i ($bytevector-length bv))) ($bytevector-ieee-double-native-ref bv i) - (error 'bytevector-ieee-double-native-ref "invalid index" i)) - (error 'bytevector-ieee-double-native-ref "not a bytevector" bv))) + (die 'bytevector-ieee-double-native-ref "invalid index" i)) + (die 'bytevector-ieee-double-native-ref "not a bytevector" bv))) (define (bytevector-ieee-single-native-ref bv i) (if (bytevector? bv) @@ -996,8 +996,8 @@ ($fxzero? ($fxlogand i 3)) ($fx< i ($bytevector-length bv))) ($bytevector-ieee-single-native-ref bv i) - (error 'bytevector-ieee-single-native-ref "invalid index" i)) - (error 'bytevector-ieee-single-native-ref "not a bytevector" bv))) + (die 'bytevector-ieee-single-native-ref "invalid index" i)) + (die 'bytevector-ieee-single-native-ref "not a bytevector" bv))) (define (bytevector-ieee-double-native-set! bv i x) (if (bytevector? bv) @@ -1007,9 +1007,9 @@ ($fx< i ($bytevector-length bv))) (if (flonum? x) ($bytevector-ieee-double-native-set! bv i x) - (error 'bytevector-ieee-double-native-set! "not a flonum" x)) - (error 'bytevector-ieee-double-native-set! "invalid index" i)) - (error 'bytevector-ieee-double-native-set! "not a bytevector" bv))) + (die 'bytevector-ieee-double-native-set! "not a flonum" x)) + (die 'bytevector-ieee-double-native-set! "invalid index" i)) + (die 'bytevector-ieee-double-native-set! "not a bytevector" bv))) (define (bytevector-ieee-single-native-set! bv i x) (if (bytevector? bv) @@ -1019,9 +1019,9 @@ ($fx< i ($bytevector-length bv))) (if (flonum? x) ($bytevector-ieee-single-native-set! bv i x) - (error 'bytevector-ieee-single-native-set! "not a flonum" x)) - (error 'bytevector-ieee-single-native-set! "invalid index" i)) - (error 'bytevector-ieee-single-native-set! "not a bytevector" bv))) + (die 'bytevector-ieee-single-native-set! "not a flonum" x)) + (die 'bytevector-ieee-single-native-set! "invalid index" i)) + (die 'bytevector-ieee-single-native-set! "not a bytevector" bv))) (define (bytevector-ieee-double-ref bv i endianness) (if (bytevector? bv) @@ -1032,10 +1032,10 @@ (case endianness [(little) ($bytevector-ieee-double-native-ref bv i)] [(big) ($bytevector-ieee-double-nonnative-ref bv i)] - [else (error 'bytevector-ieee-double-ref + [else (die 'bytevector-ieee-double-ref "invalid endianness" endianness)]) - (error 'bytevector-ieee-double-ref "invalid index" i)) - (error 'bytevector-ieee-double-ref "not a bytevector" bv))) + (die 'bytevector-ieee-double-ref "invalid index" i)) + (die 'bytevector-ieee-double-ref "not a bytevector" bv))) (define (bytevector-ieee-single-ref bv i endianness) (if (bytevector? bv) @@ -1046,10 +1046,10 @@ (case endianness [(little) ($bytevector-ieee-single-native-ref bv i)] [(big) ($bytevector-ieee-single-nonnative-ref bv i)] - [else (error 'bytevector-ieee-single-ref + [else (die 'bytevector-ieee-single-ref "invalid endianness" endianness)]) - (error 'bytevector-ieee-single-ref "invalid index" i)) - (error 'bytevector-ieee-single-ref "not a bytevector" bv))) + (die 'bytevector-ieee-single-ref "invalid index" i)) + (die 'bytevector-ieee-single-ref "not a bytevector" bv))) (define (bytevector-ieee-double-set! bv i x endianness) (if (bytevector? bv) @@ -1061,11 +1061,11 @@ (case endianness [(little) ($bytevector-ieee-double-native-set! bv i x)] [(big) ($bytevector-ieee-double-nonnative-set! bv i x)] - [else (error 'bytevector-ieee-double-set! + [else (die 'bytevector-ieee-double-set! "invalid endianness" endianness)]) - (error 'bytevector-ieee-double-set! "not a flonum" x)) - (error 'bytevector-ieee-double-set! "invalid index" i)) - (error 'bytevector-ieee-double-set! "not a bytevector" bv))) + (die 'bytevector-ieee-double-set! "not a flonum" x)) + (die 'bytevector-ieee-double-set! "invalid index" i)) + (die 'bytevector-ieee-double-set! "not a bytevector" bv))) (define (bytevector-ieee-single-set! bv i x endianness) (if (bytevector? bv) @@ -1077,11 +1077,11 @@ (case endianness [(little) ($bytevector-ieee-single-native-set! bv i x)] [(big) ($bytevector-ieee-single-nonnative-set! bv i x)] - [else (error 'bytevector-ieee-single-set! + [else (die 'bytevector-ieee-single-set! "invalid endianness" endianness)]) - (error 'bytevector-ieee-single-set! "not a flonum" x)) - (error 'bytevector-ieee-single-set! "invalid index" i)) - (error 'bytevector-ieee-single-set! "not a bytevector" bv))) + (die 'bytevector-ieee-single-set! "not a flonum" x)) + (die 'bytevector-ieee-single-set! "invalid index" i)) + (die 'bytevector-ieee-single-set! "not a bytevector" bv))) (define ($bytevector-ref/64 bv i who decoder endianness) @@ -1093,9 +1093,9 @@ (case endianness [(little big) (decoder bv i endianness 8)] - [else (error who "invalid endianness" endianness)]) - (error who "invalid index" i)) - (error who "not a bytevector" bv))) + [else (die who "invalid endianness" endianness)]) + (die who "invalid index" i)) + (die who "not a bytevector" bv))) (define (bytevector-u64-native-ref bv i) ($bytevector-ref/64 bv i 'bytevector-u64-native-ref @@ -1119,17 +1119,17 @@ (case endianness [(little big) (unless (or (fixnum? n) (bignum? n)) - (error who + (die who (if (number? n) "number is not exact" "not a number") n)) (unless (and (<= lo n) (< n hi)) - (error who "number out of range" n)) + (die who "number out of range" n)) (setter bv i n endianness 8)] - [else (error who "invalid endianness" endianness)]) - (error who "invalid index" i)) - (error who "not a bytevector" bv))) + [else (die who "invalid endianness" endianness)]) + (die who "invalid index" i)) + (die who "not a bytevector" bv))) (define (bytevector-u64-native-set! bv i n) ($bytevector-set/64 bv i n 0 (expt 2 64) diff --git a/scheme/ikarus.cafe.ss b/scheme/ikarus.cafe.ss index 188660c..7525ec4 100644 --- a/scheme/ikarus.cafe.ss +++ b/scheme/ikarus.cafe.ss @@ -31,8 +31,8 @@ description: Input and output performed by the cafe can be changed by the console-input-port and console-output-port parameters. - If an error occurs during reading, evaluating, or printing an - expression, then the error is printed to the error-port and the + If an die occurs during reading, evaluating, or printing an + expression, then the die is printed to the error-port and the operations of the cafe resume as normal.|# #|FIXME:new-cafe Be specific about what the error-port is |# @@ -112,7 +112,7 @@ description: [() (do-new-cafe default-cafe-eval)] [(p) (unless (procedure? p) - (error 'new-cafe "not a procedure" p)) + (die 'new-cafe "not a procedure" p)) (do-new-cafe p)])) ) diff --git a/scheme/ikarus.chars.ss b/scheme/ikarus.chars.ss index ed54041..869a70c 100644 --- a/scheme/ikarus.chars.ss +++ b/scheme/ikarus.chars.ss @@ -26,26 +26,26 @@ (define integer->char (lambda (n) (cond - [(not (fixnum? n)) (error 'integer->char "invalid argument" n)] - [($fx< n 0) (error 'integer->char "negative" n)] + [(not (fixnum? n)) (die 'integer->char "invalid argument" n)] + [($fx< n 0) (die 'integer->char "negative" n)] [($fx<= n #xD7FF) ($fixnum->char n)] [($fx< n #xE000) - (error 'integer->char "integer does not have a unicode representation" n)] + (die 'integer->char "integer does not have a unicode representation" n)] [($fx<= n #x10FFFF) ($fixnum->char n)] - [else (error 'integer->char + [else (die 'integer->char "integer does not have a unicode representation" n)]))) (define char->integer (lambda (x) (unless (char? x) - (error 'char->integer "not a character" x)) + (die 'char->integer "not a character" x)) ($char->fixnum x))) ;;; FIXME: this file is embarrasing (define char=? (let () (define (err x) - (error 'char=? "not a character" x)) + (die 'char=? "not a character" x)) (case-lambda [(c1 c2) (if (char? c1) @@ -82,7 +82,7 @@ (define char? (let () (define (err x) - (error 'char>? "not a character" x)) + (die 'char>? "not a character" x)) (case-lambda [(c1 c2) (if (char? c1) @@ -193,7 +193,7 @@ (define char>=? (let () (define (err x) - (error 'char>=? "not a character" x)) + (die 'char>=? "not a character" x)) (case-lambda [(c1 c2) (if (char? c1) diff --git a/scheme/ikarus.code-objects.ss b/scheme/ikarus.code-objects.ss index 1e791c3..3266a5b 100644 --- a/scheme/ikarus.code-objects.ss +++ b/scheme/ikarus.code-objects.ss @@ -31,75 +31,75 @@ (define make-code (lambda (code-size freevars) (unless (and (fixnum? code-size) ($fx>= code-size 0)) - (error 'make-code "not a valid code size" code-size)) + (die 'make-code "not a valid code size" code-size)) (unless (and (fixnum? freevars) ($fx>= freevars 0)) - (error 'make-code "not a valid number of free vars" freevars)) + (die 'make-code "not a valid number of free vars" freevars)) (foreign-call "ikrt_make_code" code-size freevars '#()))) (define code-reloc-vector (lambda (x) - (unless (code? x) (error 'code-reloc-vector "not a code" x)) + (unless (code? x) (die 'code-reloc-vector "not a code" x)) ($code-reloc-vector x))) (define code-freevars (lambda (x) - (unless (code? x) (error 'code-closure-size "not a code" x)) + (unless (code? x) (die 'code-closure-size "not a code" x)) ($code-freevars x))) (define code-size (lambda (x) - (unless (code? x) (error 'code-size "not a code" x)) + (unless (code? x) (die 'code-size "not a code" x)) ($code-size x))) (define code-set! (lambda (x i v) - (unless (code? x) (error 'code-set! "not a code" x)) + (unless (code? x) (die 'code-set! "not a code" x)) (unless (and (fixnum? i) ($fx>= i 0) ($fx< i ($code-size x))) - (error 'code-set! "not a valid index" i)) + (die 'code-set! "not a valid index" i)) (unless (and (fixnum? v) ($fx>= v 0) ($fx< v 256)) - (error 'code-set! "not a valid byte" v)) + (die 'code-set! "not a valid byte" v)) ($code-set! x i v))) (define code-ref (lambda (x i) - (unless (code? x) (error 'code-ref "not a code" x)) + (unless (code? x) (die 'code-ref "not a code" x)) (unless (and (fixnum? i) ($fx>= i 0) ($fx< i ($code-size x))) - (error 'code-ref "not a valid index" i)) + (die 'code-ref "not a valid index" i)) ($code-ref x i))) (define set-code-reloc-vector! (lambda (x v) (unless (code? x) - (error 'set-code-reloc-vector! "not a code" x)) + (die 'set-code-reloc-vector! "not a code" x)) (unless (vector? v) - (error 'set-code-reloc-vector! "not a vector" v)) + (die 'set-code-reloc-vector! "not a vector" v)) (foreign-call "ikrt_set_code_reloc_vector" x v))) (define set-code-annotation! (lambda (x v) (unless (code? x) - (error 'set-code-annotation! "not a code" x)) + (die 'set-code-annotation! "not a code" x)) (foreign-call "ikrt_set_code_annotation" x v))) (define code->thunk (lambda (x) (unless (code? x) - (error 'code->thunk "not a a code object" x)) + (die 'code->thunk "not a a code object" x)) (unless ($fxzero? ($code-freevars x)) - (error 'code->thunk "has free variables" x)) + (die 'code->thunk "has free variables" x)) ($code->closure x))) (define (procedure-annotation x) (if (procedure? x) ($code-annotation ($closure-code x)) - (error 'procedure-annotation "not a procedure" x))) + (die 'procedure-annotation "not a procedure" x))) ) diff --git a/scheme/ikarus.codecs.ss b/scheme/ikarus.codecs.ss index 296af45..bdec699 100644 --- a/scheme/ikarus.codecs.ss +++ b/scheme/ikarus.codecs.ss @@ -61,17 +61,17 @@ (define (codec->fixnum x who) (cond [(assq x codec-alist) => cdr] - [else (error who "not a valid coded" x)])) + [else (die who "not a valid coded" x)])) (define (eol-style->fixnum x who) (cond [(assq x eol-style-alist) => cdr] - [else (error who "not a valid eol-style" x)])) + [else (die who "not a valid eol-style" x)])) (define (error-handling-mode->fixnum x who) (cond [(assq x error-handling-mode-alist) => cdr] - [else (error who "not a valid error-handling mode" x)])) + [else (die who "not a valid error-handling mode" x)])) (define make-transcoder (case-lambda @@ -94,24 +94,24 @@ (if (transcoder? x) (let ([tag (fxlogand ($transcoder->data x) codec-mask)]) (or (rev-lookup tag codec-alist) - (error who "transcoder has no codec" x))) - (error who "not a transcoder" x))) + (die who "transcoder has no codec" x))) + (die who "not a transcoder" x))) (define (transcoder-eol-style x) (define who 'transcoder-eol-style) (if (transcoder? x) (let ([tag (fxlogand ($transcoder->data x) eol-style-mask)]) (or (rev-lookup tag eol-style-alist) - (error who "transcoder has no eol-style" x))) - (error who "not a transcoder" x))) + (die who "transcoder has no eol-style" x))) + (die who "not a transcoder" x))) (define (transcoder-error-handling-mode x) (define who 'transcoder-error-handling-mode) (if (transcoder? x) (let ([tag (fxlogand ($transcoder->data x) error-handling-mode-mask)]) (or (rev-lookup tag error-handling-mode-alist) - (error who "transcoder has no error-handling mode" x))) - (error who "not a transcoder" x))) + (die who "transcoder has no error-handling mode" x))) + (die who "not a transcoder" x))) (define (buffer-mode? x) (and (memq x '(none line block)) #t)) @@ -133,7 +133,7 @@ (define (file-options-spec ls) (unless (list? ls) - (error 'file-options-spec "not a list" ls)) + (die 'file-options-spec "not a list" ls)) (let f ([ls ls] [n 0]) (cond [(null? ls) (vector-ref file-options-vec n)] diff --git a/scheme/ikarus.command-line.ss b/scheme/ikarus.command-line.ss index e12ba93..907fe63 100644 --- a/scheme/ikarus.command-line.ss +++ b/scheme/ikarus.command-line.ss @@ -26,6 +26,6 @@ (lambda (x) (if (and (list? x) (andmap string? x)) x - (error 'command-list + (die 'command-list "invalid command-line-arguments ~s\n" x)))))) diff --git a/scheme/ikarus.conditions.ss b/scheme/ikarus.conditions.ss index 89c8d7f..1ff7f69 100644 --- a/scheme/ikarus.conditions.ss +++ b/scheme/ikarus.conditions.ss @@ -148,7 +148,7 @@ [(x) (if (condition? x) x - (error 'condition "not a condition type" x))] + (die 'condition "not a condition type" x))] [x* (let ([ls (let f ([x* x*]) @@ -158,7 +158,7 @@ (cons (car x*) (f (cdr x*)))] [(compound-condition? (car x*)) (append (simple-conditions (car x*)) (f (cdr x*)))] - [else (error 'condition "not a condition" (car x*))]))]) + [else (die 'condition "not a condition" (car x*))]))]) (cond [(null? ls) (make-compound-condition '())] [(null? (cdr ls)) (car ls)] @@ -168,13 +168,13 @@ (cond [(compound-condition? x) (compound-condition-components x)] [(&condition? x) (list x)] - [else (error 'simple-conditions "not a condition" x)])) + [else (die 'simple-conditions "not a condition" x)])) (define (condition-predicate rtd) (unless (rtd? rtd) - (error 'condition-predicate "not a record type descriptor" rtd)) + (die 'condition-predicate "not a record type descriptor" rtd)) (unless (rtd-subtype? rtd (record-type-descriptor &condition)) - (error 'condition-predicate "not a descendant of &condition" rtd)) + (die 'condition-predicate "not a descendant of &condition" rtd)) (let ([p? (record-predicate rtd)]) (lambda (x) (or (p? x) @@ -186,11 +186,11 @@ (define (condition-accessor rtd proc) (unless (rtd? rtd) - (error 'condition-accessor "not a record type descriptor" rtd)) + (die 'condition-accessor "not a record type descriptor" rtd)) (unless (procedure? proc) - (error 'condition-accessor "not a procedure" proc)) + (die 'condition-accessor "not a procedure" proc)) (unless (rtd-subtype? rtd (record-type-descriptor &condition)) - (error 'condition-accessor "not a descendant of &condition" rtd)) + (die 'condition-accessor "not a descendant of &condition" rtd)) (let ([p? (record-predicate rtd)]) (lambda (x) (cond @@ -203,9 +203,9 @@ (proc (car ls)) (f (cdr ls)))] [else - (error 'condition-accessor "not a condition of correct type" x rtd)]))] + (die 'condition-accessor "not a condition of correct type" x rtd)]))] [else - (error 'condition-accessor "not a condition of correct type" x rtd)])))) + (die 'condition-accessor "not a condition of correct type" x rtd)])))) (define-syntax define-condition-type (lambda (x) @@ -381,7 +381,7 @@ [(x port) (if (output-port? port) (print-condition x port) - (error 'print-condition "not an output port" port))]))) + (die 'print-condition "not an output port" port))]))) ;(let ([p ; (lambda (x p) diff --git a/scheme/ikarus.control.ss b/scheme/ikarus.control.ss index 5d124cc..4dec194 100644 --- a/scheme/ikarus.control.ss +++ b/scheme/ikarus.control.ss @@ -32,7 +32,7 @@ (lambda (f) (if (procedure? f) (primitive-call/cf f) - (error 'call/cf "not a procedure" f)))) + (die 'call/cf "not a procedure" f)))) (define primitive-call/cc (lambda (f) @@ -92,7 +92,7 @@ (define call/cc (lambda (f) (unless (procedure? f) - (error 'call/cc "not a procedure" f)) + (die 'call/cc "not a procedure" f)) (primitive-call/cc (lambda (k) (let ([save winders]) @@ -106,18 +106,18 @@ (define call-with-current-continuation (lambda (f) (unless (procedure? f) - (error 'call-with-current-continuation + (die 'call-with-current-continuation "not a procedure" f)) (call/cc f))) (define dynamic-wind (lambda (in body out) (unless (procedure? in) - (error 'dynamic-wind "not a procedure" in)) + (die 'dynamic-wind "not a procedure" in)) (unless (procedure? body) - (error 'dynamic-wind "not a procedure" body)) + (die 'dynamic-wind "not a procedure" body)) (unless (procedure? out) - (error 'dynamic-wind "not a procedure" out)) + (die 'dynamic-wind "not a procedure" out)) (in) (set! winders (cons (cons in out) winders)) (call-with-values diff --git a/scheme/ikarus.enumerations.ss b/scheme/ikarus.enumerations.ss index dfd14c3..fa34961 100644 --- a/scheme/ikarus.enumerations.ss +++ b/scheme/ikarus.enumerations.ss @@ -33,20 +33,20 @@ (define (make-enumeration ls) (unless (and (list? ls) (for-all symbol? ls)) - (error 'make-enumeration "~s is not a list of symbols" ls)) + (die 'make-enumeration "~s is not a list of symbols" ls)) (make-enum (gensym) ls ls)) (define (enum-set-universe x) (unless (enum? x) - (error 'enum-set-universe "~s is not an enumeration" x)) + (die 'enum-set-universe "~s is not an enumeration" x)) (enum-univ x)) (define (enum-set-indexer x) (unless (enum? x) - (error 'enum-set-indexer "~s is not an enumeration" x)) + (die 'enum-set-indexer "~s is not an enumeration" x)) (lambda (s) (unless (symbol? s) - (error 'enum-set-indexer "~s is not a symbol" s)) + (die 'enum-set-indexer "~s is not a symbol" s)) (let f ([s s] [i 0] [ls (enum-univ x)]) (cond [(pair? ls) @@ -57,15 +57,15 @@ (define (enum-set-constructor x) (unless (enum? x) - (error 'enum-set-constructor "~s is not an enumeration" x)) + (die 'enum-set-constructor "~s is not an enumeration" x)) (let ([idx (enum-set-indexer x)]) (lambda (ls) (unless (and (list? ls) (for-all symbol? ls)) - (error 'enum-set-constructor "~s is not a list of symbols" ls)) + (die 'enum-set-constructor "~s is not a list of symbols" ls)) (for-each (lambda (s) (unless (memq s (enum-univ x)) - (error 'enum-set-constructor "~s is not in the universe of ~s" s x))) + (die 'enum-set-constructor "~s is not in the universe of ~s" s x))) ls) (make-enum (enum-g x) (enum-univ x) (map car @@ -75,7 +75,7 @@ (define (enum-set->list x) (unless (enum? x) - (error 'enum-set->list "~s is not an enumeration" x)) + (die 'enum-set->list "~s is not an enumeration" x)) (map values (enum-values x))) (define (enum-set-member? s x) @@ -84,8 +84,8 @@ #t (if (symbol? s) #f - (error 'enum-set-member? "not a symbol" s))) - (error 'enum-set-member? "not an enumeration" x))) + (die 'enum-set-member? "not a symbol" s))) + (die 'enum-set-member? "not an enumeration" x))) (define (enum-set-subset? x1 x2) (define (subset? s1 s2) @@ -97,8 +97,8 @@ (and (subset? (enum-values x1) (enum-values x2)) (or (eq? (enum-g x1) (enum-g x2)) (subset? (enum-univ x1) (enum-univ x2)))) - (error 'enum-set-subset? "not an enumeration" x2)) - (error 'enum-set-subset? "not an enumeration" x1))) + (die 'enum-set-subset? "not an enumeration" x2)) + (die 'enum-set-subset? "not an enumeration" x1))) (define (enum-set=? x1 x2) (define (subset? s1 s2) @@ -112,8 +112,8 @@ (or (eq? (enum-g x1) (enum-g x2)) (and (subset? (enum-univ x1) (enum-univ x2)) (subset? (enum-univ x2) (enum-univ x1))))) - (error 'enum-set=? "not an enumeration" x2)) - (error 'enum-set=? "not an enumeration" x1))) + (die 'enum-set=? "not an enumeration" x2)) + (die 'enum-set=? "not an enumeration" x1))) (define (enum-set-op x1 x2 who combine) (if (enum? x1) @@ -121,10 +121,10 @@ (let ([g (enum-g x1)] [u (enum-univ x1)]) (if (eq? g (enum-g x2)) (make-enum g u (combine u (enum-values x1) (enum-values x2))) - (error who + (die who "enum sets have different enumeration types" x1 x2))) - (error who "not an enumeration" x2)) - (error who "not an enumeration" x1))) + (die who "not an enumeration" x2)) + (die who "not an enumeration" x1))) (define (enum-set-union x1 x2) (define (union u s1 s2) @@ -183,7 +183,7 @@ (if (enum? x) (let ([g (enum-g x)] [u (enum-univ x)]) (make-enum g u (complement u (enum-values x)))) - (error 'enum-set-complement "not an enumeration" x))) + (die 'enum-set-complement "not an enumeration" x))) (define (enum-set-projection x1 x2) (define (combine u s) @@ -202,8 +202,8 @@ (if (null? s) (make-enum g u '()) (make-enum g u (combine u s)))))) - (error 'enum-set-projection "not an enumeration" x2)) - (error 'enum-set-projection "not an enumeration" x1))) + (die 'enum-set-projection "not an enumeration" x2)) + (die 'enum-set-projection "not an enumeration" x1))) ) #!eof diff --git a/scheme/ikarus.exceptions.ss b/scheme/ikarus.exceptions.ss index 3f6dcd9..3bb7e7f 100644 --- a/scheme/ikarus.exceptions.ss +++ b/scheme/ikarus.exceptions.ss @@ -16,14 +16,14 @@ (library (ikarus exceptions) (export with-exception-handler raise raise-continuable - error assertion-violation) + error assertion-violation die) (import (only (rnrs) condition make-non-continuable-violation make-message-condition make-error make-who-condition make-irritants-condition make-assertion-violation) (except (ikarus) with-exception-handler raise raise-continuable - error assertion-violation)) + error assertion-violation die)) (define handlers (make-parameter @@ -35,10 +35,10 @@ (define (with-exception-handler handler proc2) (unless (procedure? handler) - (error 'with-exception-handler + (assertion-violation 'with-exception-handler "handler is not a procedure" handler)) (unless (procedure? proc2) - (error 'with-exception-handler "not a procedure" proc2)) + (assertion-violation 'with-exception-handler "not a procedure" proc2)) (parameterize ([handlers (cons handler (handlers))]) (proc2))) @@ -60,7 +60,7 @@ (define (error who msg . irritants) (unless (string? msg) - (error 'error "message is not a string" msg)) + (assertion-violation 'error "message is not a string" msg)) (raise (condition (make-error) @@ -82,5 +82,8 @@ (condition) (make-irritants-condition irritants))))) + (define die assertion-violation) + + ) diff --git a/scheme/ikarus.fasl.ss b/scheme/ikarus.fasl.ss index d31a637..a3c5f61 100644 --- a/scheme/ikarus.fasl.ss +++ b/scheme/ikarus.fasl.ss @@ -63,12 +63,12 @@ (define who 'fasl-read) (define (assert-eq? x y) (unless (eq? x y) - (error who + (die who (format "Expected ~s, got ~s\n" y x)))) (define (char->int x) (if (char? x) (char->integer x) - (error who "unexpected eof inside a fasl object"))) + (die who "unexpected eof inside a fasl object"))) (define (read-fixnum p) (let ([c0 (char->int (read-char p))] [c1 (char->int (read-char p))] @@ -115,7 +115,7 @@ (cond [(fx< m (vector-length marks)) (when (vector-ref marks m) - (error 'fasl-read "mark set twice" m)) + (die 'fasl-read "mark set twice" m)) (vector-set! marks m obj)] [else (let ([n (vector-length marks)]) @@ -158,7 +158,7 @@ [(#\<) (let ([cm (read-int p)]) (unless (fx< cm (vector-length marks)) - (error who "invalid mark" m)) + (die who "invalid mark" m)) (let ([code (vector-ref marks cm)]) (let ([proc ($code->closure code)]) (when m (put-mark m proc)) @@ -168,10 +168,10 @@ (assert-eq? (read-char p) #\x) (let ([code (read-code cm m)]) (if m (vector-ref marks m) ($code->closure code))))] - [else (error who "invalid code header" c)]))) + [else (die who "invalid code header" c)]))) (define (read/mark m) (define (nom) - (when m (error who "unhandled mark"))) + (when m (die who "unhandled mark"))) (let ([h (read-char p)]) (case h [(#\I) @@ -253,17 +253,17 @@ (cond [(char? c) c] [else - (error who "invalid eof inside a fasl object")]))] + (die who "invalid eof inside a fasl object")]))] [(#\>) (let ([m (read-int p)]) (read/mark m))] [(#\<) (let ([m (read-int p)]) (unless (fx< m (vector-length marks)) - (error who "invalid mark" m)) + (die who "invalid mark" m)) (vector-ref marks m))] [else - (error who "Unexpected char as a fasl object header" h)]))) + (die who "Unexpected char as a fasl object header" h)]))) (read)) (define $fasl-read (lambda (p) @@ -279,7 +279,7 @@ [(p) (if (input-port? p) ($fasl-read p) - (error 'fasl-read "not an input port" p))])) + (die 'fasl-read "not an input port" p))])) ) diff --git a/scheme/ikarus.fasl.write.ss b/scheme/ikarus.fasl.write.ss index 92ee053..c6e8933 100644 --- a/scheme/ikarus.fasl.write.ss +++ b/scheme/ikarus.fasl.write.ss @@ -40,14 +40,14 @@ (define write-fixnum (lambda (x p) - (unless (fixnum? x) (error 'write-fixnum "not a fixnum" x)) + (unless (fixnum? x) (die 'write-fixnum "not a fixnum" x)) (write-byte (fxsll (fxlogand x #x3F) 2) p) (write-byte (fxlogand (fxsra x 6) #xFF) p) (write-byte (fxlogand (fxsra x 14) #xFF) p) (write-byte (fxlogand (fxsra x 22) #xFF) p))) (define write-int (lambda (x p) - (unless (fixnum? x) (error 'write-int "not a fixnum" x)) + (unless (fixnum? x) (die 'write-int "not a fixnum" x)) (write-byte (fxlogand x #xFF) p) (write-byte (fxlogand (fxsra x 8) #xFF) p) (write-byte (fxlogand (fxsra x 16) #xFF) p) @@ -72,7 +72,7 @@ (put-tag (if x #\T #\F) p)] [(eof-object? x) (put-tag #\E p)] [(eq? x (void)) (put-tag #\U p)] - [else (error 'fasl-write "not a fasl-writable immediate" x)]))) + [else (die 'fasl-write "not a fasl-writable immediate" x)]))) (define (ascii-string? s) (let f ([s s] [i 0] [n (string-length s)]) @@ -222,7 +222,7 @@ (write-byte ($bignum-byte-ref x i) p) (f (fxadd1 i))))) m] - [else (error 'fasl-write "not fasl-writable" x)]))) + [else (die 'fasl-write "not fasl-writable" x)]))) (define (write-bytevector x i j p) (unless ($fx= i j) (write-byte ($bytevector-u8-ref x i) p) @@ -234,7 +234,7 @@ [(hashtable-ref h x #f) => (lambda (mark) (unless (fixnum? mark) - (error 'fasl-write "BUG: invalid mark" mark)) + (die 'fasl-write "BUG: invalid mark" mark)) (cond [(fx= mark 0) ; singly referenced (do-write x p h m)] @@ -247,7 +247,7 @@ (put-tag #\< p) (write-int (fx- 0 mark) p) m]))] - [else (error 'fasl-write "BUG: not in hash table" x)]))) + [else (die 'fasl-write "BUG: not in hash table" x)]))) (define make-graph (lambda (x h) (unless (immediate? x) @@ -275,7 +275,7 @@ (make-graph (code-reloc-vector x) h)] [(struct? x) (when (eq? x (base-rtd)) - (error 'fasl-write "base-rtd is not writable")) + (die 'fasl-write "base-rtd is not writable")) (let ([rtd (struct-type-descriptor x)]) (cond [(eq? rtd (base-rtd)) @@ -294,7 +294,7 @@ [(procedure? x) (let ([code ($closure-code x)]) (unless (fxzero? (code-freevars code)) - (error 'fasl-write + (die 'fasl-write "Cannot write a non-thunk procedure; \ the one given has free vars" (code-freevars code))) @@ -305,7 +305,7 @@ [(ratnum? x) (make-graph (numerator x) h) (make-graph (denominator x) h)] - [else (error 'fasl-write "not fasl-writable" x)])])))) + [else (die 'fasl-write "not fasl-writable" x)])])))) (define fasl-write-to-port (lambda (x port) (let ([h (make-eq-hashtable)]) @@ -322,5 +322,5 @@ (case-lambda [(x port) (unless (and (output-port? port) (binary-port? port)) - (error 'fasl-write "not an output port" port)) + (die 'fasl-write "not an output port" port)) (fasl-write-to-port x port)]))) diff --git a/scheme/ikarus.fixnums.ss b/scheme/ikarus.fixnums.ss index c2c9c0d..8206d7c 100644 --- a/scheme/ikarus.fixnums.ss +++ b/scheme/ikarus.fixnums.ss @@ -50,39 +50,39 @@ (cond [(eq? x 0) #t] [(fixnum? x) #f] - [else (error 'fxzero? "not a fixnum" x)]))) + [else (die 'fxzero? "not a fixnum" x)]))) (define fxadd1 (lambda (n) (if (fixnum? n) ($fxadd1 n) - (error 'fxadd1 "not a fixnum" n)))) + (die 'fxadd1 "not a fixnum" n)))) (define fxsub1 (lambda (n) (if (fixnum? n) ($fxsub1 n) - (error 'fxsub1 "not a fixnum" n)))) + (die 'fxsub1 "not a fixnum" n)))) (define fxlognot (lambda (x) (unless (fixnum? x) - (error 'fxlognot "not a fixnum" x)) + (die 'fxlognot "not a fixnum" x)) ($fxlognot x))) (define fxnot (lambda (x) (unless (fixnum? x) - (error 'fxnot "not a fixnum" x)) + (die 'fxnot "not a fixnum" x)) ($fxlognot x))) (define error@fx+ (lambda (x y) (if (fixnum? x) (if (fixnum? y) - (error 'fx+ "overflow when adding numbers" x y) - (error 'fx+ "not a fixnum" y)) - (error 'fx+ "not a fixnum" x)))) + (die 'fx+ "overflow when adding numbers" x y) + (die 'fx+ "not a fixnum" y)) + (die 'fx+ "not a fixnum" x)))) (define fx+ (lambda (x y) @@ -91,17 +91,17 @@ (define fx- (lambda (x y) (unless (fixnum? x) - (error 'fx- "not a fixnum" x)) + (die 'fx- "not a fixnum" x)) (unless (fixnum? y) - (error 'fx- "not a fixnum" y)) + (die 'fx- "not a fixnum" y)) ($fx- x y))) (define fx* (lambda (x y) (unless (fixnum? x) - (error 'fx* "not a fixnum" x)) + (die 'fx* "not a fixnum" x)) (unless (fixnum? y) - (error 'fx* "not a fixnum" y)) + (die 'fx* "not a fixnum" y)) ($fx* x y))) @@ -110,7 +110,7 @@ (if (pair? ls) (if (fixnum? ($car ls)) (false-loop who ($cdr ls)) - (error who "not a fixnum" ($car ls))) + (die who "not a fixnum" ($car ls))) #f))) (define-syntax fxcmp @@ -119,9 +119,9 @@ (case-lambda [(x y) (unless (fixnum? x) - (error 'who "not a fixnum" x)) + (die 'who "not a fixnum" x)) (unless (fixnum? y) - (error 'who "not a fixnum" y)) + (die 'who "not a fixnum" y)) ($op x y)] [(x y . ls) (if (fixnum? x) @@ -134,13 +134,13 @@ (if ($op x y) (f y ls) (false-loop 'who ls)) - (error 'who "not a fixnum" y))) + (die 'who "not a fixnum" y))) #t)) (false-loop 'who ls)) - (error 'who "not a fixnum" y)) - (error 'who "not a fixnum" x))] + (die 'who "not a fixnum" y)) + (die 'who "not a fixnum" x))] [(x) - (if (fixnum? x) #t (error 'who "not a fixnum" x))])])) + (if (fixnum? x) #t (die 'who "not a fixnum" x))])])) (define fx= (fxcmp fx= $fx=)) (define fx< (fxcmp fx< $fx<)) @@ -157,32 +157,32 @@ (define fxquotient (lambda (x y) (unless (fixnum? x) - (error 'fxquotient "not a fixnum" x)) + (die 'fxquotient "not a fixnum" x)) (unless (fixnum? y) - (error 'fxquotient "not a fixnum" y)) + (die 'fxquotient "not a fixnum" y)) (when ($fxzero? y) - (error 'fxquotient "zero dividend" y)) + (die 'fxquotient "zero dividend" y)) ($fxquotient x y))) (define fxremainder (lambda (x y) (unless (fixnum? x) - (error 'fxremainder "not a fixnum" x)) + (die 'fxremainder "not a fixnum" x)) (unless (fixnum? y) - (error 'fxremainder "not a fixnum" y)) + (die 'fxremainder "not a fixnum" y)) (when ($fxzero? y) - (error 'fxremainder "zero dividend" y)) + (die 'fxremainder "zero dividend" y)) (let ([q ($fxquotient x y)]) ($fx- x ($fx* q y))))) (define fxmodulo (lambda (x y) (unless (fixnum? x) - (error 'fxmodulo "not a fixnum" x)) + (die 'fxmodulo "not a fixnum" x)) (unless (fixnum? y) - (error 'fxmodulo "not a fixnum" y)) + (die 'fxmodulo "not a fixnum" y)) (when ($fxzero? y) - (error 'fxmodulo "zero dividend" y)) + (die 'fxmodulo "zero dividend" y)) ($fxmodulo x y))) (define-syntax fxbitop @@ -193,8 +193,8 @@ (if (fixnum? x) (if (fixnum? y) ($op x y) - (error 'who "not a fixnum" y)) - (error 'who "not a fixnum" x))] + (die 'who "not a fixnum" y)) + (die 'who "not a fixnum" x))] [(x y . ls) (if (fixnum? x) (if (fixnum? y) @@ -204,11 +204,11 @@ (let ([b ($car ls)]) (if (fixnum? b) (f ($op a b) ($cdr ls)) - (error 'who "not a fixnum" b)))] + (die 'who "not a fixnum" b)))] [else a])) - (error 'who "not a fixnum" y)) - (error 'who "not a fixnum" x))] - [(x) (if (fixnum? x) x (error 'who "not a fixnum" x))] + (die 'who "not a fixnum" y)) + (die 'who "not a fixnum" x))] + [(x) (if (fixnum? x) x (die 'who "not a fixnum" x))] [() identity])])) (define fxlogor (fxbitop fxlogor $fxlogor 0)) @@ -225,58 +225,58 @@ ($fxlogor ($fxlogand x y) ($fxlogand ($fxlognot x) z)) - (error 'fxif "not a fixnum" z)) - (error 'fxif "not a fixnum" y)) - (error 'fxif "not a fixnum" x))) + (die 'fxif "not a fixnum" z)) + (die 'fxif "not a fixnum" y)) + (die 'fxif "not a fixnum" x))) (define fxsra (lambda (x y) (unless (fixnum? x) - (error 'fxsra "not a fixnum" x)) + (die 'fxsra "not a fixnum" x)) (unless (fixnum? y) - (error 'fxsra "not a fixnum" y)) + (die 'fxsra "not a fixnum" y)) (unless ($fx>= y 0) - (error 'fxsra "negative shift not allowed" y)) + (die 'fxsra "negative shift not allowed" y)) ($fxsra x y))) (define fxarithmetic-shift-right (lambda (x y) (unless (fixnum? x) - (error 'fxarithmetic-shift-right "not a fixnum" x)) + (die 'fxarithmetic-shift-right "not a fixnum" x)) (unless (fixnum? y) - (error 'fxarithmetic-shift-right "not a fixnum" y)) + (die 'fxarithmetic-shift-right "not a fixnum" y)) (unless ($fx>= y 0) - (error 'fxarithmetic-shift-right "negative shift not allowed" y)) + (die 'fxarithmetic-shift-right "negative shift not allowed" y)) ($fxsra x y))) (define fxsll (lambda (x y) (unless (fixnum? x) - (error 'fxsll "not a fixnum" x)) + (die 'fxsll "not a fixnum" x)) (unless (fixnum? y) - (error 'fxsll "not a fixnum" y)) + (die 'fxsll "not a fixnum" y)) (unless ($fx>= y 0) - (error 'fxsll "negative shift not allowed" y)) + (die 'fxsll "negative shift not allowed" y)) ($fxsll x y))) (define fxarithmetic-shift-left (lambda (x y) (unless (fixnum? x) - (error 'fxarithmetic-shift-left "not a fixnum" x)) + (die 'fxarithmetic-shift-left "not a fixnum" x)) (unless (fixnum? y) - (error 'fxarithmetic-shift-left "not a fixnum" y)) + (die 'fxarithmetic-shift-left "not a fixnum" y)) (unless ($fx>= y 0) - (error 'fxarithmetic-shift-left "negative shift not allowed" y)) + (die 'fxarithmetic-shift-left "negative shift not allowed" y)) ($fxsll x y))) (define fxarithmetic-shift (lambda (x y) (unless (fixnum? x) - (error 'fxarithmetic-shift "not a fixnum" x)) + (die 'fxarithmetic-shift "not a fixnum" x)) (unless (fixnum? y) - (error 'fxarithmetic-shift "not a fixnum" y)) + (die 'fxarithmetic-shift "not a fixnum" y)) (if ($fx>= y 0) ($fxsll x y) (if ($fx< x -100) ;;; arbitrary number < (fixnum-width) @@ -286,22 +286,22 @@ (define (fxpositive? x) (if (fixnum? x) ($fx> x 0) - (error 'fxpositive? "not a fixnum" x))) + (die 'fxpositive? "not a fixnum" x))) (define (fxnegative? x) (if (fixnum? x) ($fx< x 0) - (error 'fxnegative? "not a fixnum" x))) + (die 'fxnegative? "not a fixnum" x))) (define (fxeven? x) (if (fixnum? x) ($fxzero? ($fxlogand x 1)) - (error 'fxeven? "not a fixnum" x))) + (die 'fxeven? "not a fixnum" x))) (define (fxodd? x) (if (fixnum? x) (not ($fxzero? ($fxlogand x 1))) - (error 'fxodd? "not a fixnum" x))) + (die 'fxodd? "not a fixnum" x))) (define fxmin (case-lambda @@ -309,8 +309,8 @@ (if (fixnum? x) (if (fixnum? y) (if ($fx< x y) x y) - (error 'fxmin "not a fixnum" y)) - (error 'fxmin "not a fixnum" x))] + (die 'fxmin "not a fixnum" y)) + (die 'fxmin "not a fixnum" x))] [(x y z . ls) (fxmin (fxmin x y) (if (fixnum? z) @@ -322,9 +322,9 @@ (if ($fx< a z) (f a ($cdr ls)) (f z ($cdr ls))) - (error 'fxmin "not a fixnum" a))))) - (error 'fxmin "not a fixnum" z)))] - [(x) (if (fixnum? x) x (error 'fxmin "not a fixnum" x))])) + (die 'fxmin "not a fixnum" a))))) + (die 'fxmin "not a fixnum" z)))] + [(x) (if (fixnum? x) x (die 'fxmin "not a fixnum" x))])) (define fxmax (case-lambda @@ -332,8 +332,8 @@ (if (fixnum? x) (if (fixnum? y) (if ($fx> x y) x y) - (error 'fxmax "not a fixnum" y)) - (error 'fxmax "not a fixnum" x))] + (die 'fxmax "not a fixnum" y)) + (die 'fxmax "not a fixnum" x))] [(x y z . ls) (fxmax (fxmax x y) (if (fixnum? z) @@ -345,9 +345,9 @@ (if ($fx> a z) (f a ($cdr ls)) (f z ($cdr ls))) - (error 'fxmax "not a fixnum" a))))) - (error 'fxmax "not a fixnum" z)))] - [(x) (if (fixnum? x) x (error 'fxmax "not a fixnum" x))])) + (die 'fxmax "not a fixnum" a))))) + (die 'fxmax "not a fixnum" z)))] + [(x) (if (fixnum? x) x (die 'fxmax "not a fixnum" x))])) (define (fx*/carry fx1 fx2 fx3) (let ([s0 ($fx+ ($fx* fx1 fx2) fx3)]) @@ -404,16 +404,16 @@ (define fixnum->string (case-lambda [(x) - (unless (fixnum? x) (error 'fixnum->string "not a fixnum" x)) + (unless (fixnum? x) (die 'fixnum->string "not a fixnum" x)) ($fixnum->string x 10)] [(x r) - (unless (fixnum? x) (error 'fixnum->string "not a fixnum" x)) + (unless (fixnum? x) (die 'fixnum->string "not a fixnum" x)) (case r [(2) ($fixnum->string x 2)] [(8) ($fixnum->string x 8)] [(10) ($fixnum->string x 10)] [(16) ($fixnum->string x 16)] - [else (error 'fixnum->string "invalid radix" r)])]))) + [else (die 'fixnum->string "invalid radix" r)])]))) ) @@ -454,28 +454,28 @@ (if (fixnum? x) (if (fixnum? y) (if ($fx= y 0) - (error 'fxdiv-and-mod "division by 0") + (die 'fxdiv-and-mod "division by 0") ($fxdiv-and-mod x y)) - (error 'fxdiv-and-mod "not a fixnum" y)) - (error 'fxdiv-and-mod "not a fixnum" x))) + (die 'fxdiv-and-mod "not a fixnum" y)) + (die 'fxdiv-and-mod "not a fixnum" x))) (define (fxdiv x y) (if (fixnum? x) (if (fixnum? y) (if ($fx= y 0) - (error 'fxdiv "division by 0") + (die 'fxdiv "division by 0") ($fxdiv x y)) - (error 'fxdiv "not a fixnum" y)) - (error 'fxdiv "not a fixnum" x))) + (die 'fxdiv "not a fixnum" y)) + (die 'fxdiv "not a fixnum" x))) (define (fxmod x y) (if (fixnum? x) (if (fixnum? y) (if ($fx= y 0) - (error 'fxmod "modision by 0") + (die 'fxmod "modision by 0") ($fxmod x y)) - (error 'fxmod "not a fixnum" y)) - (error 'fxmod "not a fixnum" x))) + (die 'fxmod "not a fixnum" y)) + (die 'fxmod "not a fixnum" x))) (define ($fxdiv0-and-mod0 n m) (let ([d0 (quotient n m)]) @@ -526,43 +526,43 @@ (if (fixnum? x) (if (fixnum? y) (if ($fx= y 0) - (error 'fxdiv0-and-mod0 "division by 0") + (die 'fxdiv0-and-mod0 "division by 0") (let-values ([(d m) ($fxdiv0-and-mod0 x y)]) (if (and (fixnum? d) (fixnum? m)) (values d m) - (error 'fxdiv0-and-mod0 + (die 'fxdiv0-and-mod0 "results not representable as fixnums" x y)))) - (error 'fxdiv0-and-mod0 "not a fixnum" y)) - (error 'fxdiv0-and-mod0 "not a fixnum" x))) + (die 'fxdiv0-and-mod0 "not a fixnum" y)) + (die 'fxdiv0-and-mod0 "not a fixnum" x))) (define (fxdiv0 x y) (if (fixnum? x) (if (fixnum? y) (if ($fx= y 0) - (error 'fxdiv0 "division by 0") + (die 'fxdiv0 "division by 0") (let ([d ($fxdiv0 x y)]) (if (fixnum? d) d - (error 'fxdiv0 + (die 'fxdiv0 "result not representable as fixnum" x y)))) - (error 'fxdiv0 "not a fixnum" y)) - (error 'fxdiv0 "not a fixnum" x))) + (die 'fxdiv0 "not a fixnum" y)) + (die 'fxdiv0 "not a fixnum" x))) (define (fxmod0 x y) (if (fixnum? x) (if (fixnum? y) (if ($fx= y 0) - (error 'fxmod0 "division by 0") + (die 'fxmod0 "division by 0") (let ([d ($fxmod0 x y)]) (if (fixnum? d) d - (error 'fxmod0 + (die 'fxmod0 "result not representable as fixnum" x y)))) - (error 'fxmod0 "not a fixnum" y)) - (error 'fxmod0 "not a fixnum" x))) + (die 'fxmod0 "not a fixnum" y)) + (die 'fxmod0 "not a fixnum" x))) ) diff --git a/scheme/ikarus.handlers.ss b/scheme/ikarus.handlers.ss index df37728..276c804 100644 --- a/scheme/ikarus.handlers.ss +++ b/scheme/ikarus.handlers.ss @@ -25,7 +25,7 @@ [(v) (set! x v)])] [(x guard) (unless (procedure? guard) - (error 'make-parameter "not a procedure" guard)) + (die 'make-parameter "not a procedure" guard)) (set! x (guard x)) (case-lambda [() x] @@ -55,19 +55,19 @@ (lambda (x) (if (procedure? x) x - (error 'interrupt-handler "not a procedure" x))))) + (die 'interrupt-handler "not a procedure" x))))) (define $apply-nonprocedure-error-handler (lambda (x) - (error 'apply "not a procedure" x))) + (die 'apply "not a procedure" x))) (define $incorrect-args-error-handler (lambda (p n) - (error 'apply "incorrect number of arguments" n p))) + (die 'apply "incorrect number of arguments" n p))) (define $multiple-values-error (lambda args - (error 'apply + (die 'apply "incorrect number of values returned to single value context" args))) @@ -84,47 +84,47 @@ (cond [(symbol? x) (if (symbol-bound? x) - (error 'top-level-value-error "BUG: should not happen" x) - (error #f "unbound" (string->symbol (symbol->string x))))] + (die 'top-level-value-error "BUG: should not happen" x) + (die #f "unbound" (string->symbol (symbol->string x))))] [else - (error 'top-level-value "not a symbol" x)]))) + (die 'top-level-value "not a symbol" x)]))) (define car-error (lambda (x) - (error 'car "not a pair" x))) + (die 'car "not a pair" x))) (define cdr-error (lambda (x) - (error 'cdr "not a pair" x))) + (die 'cdr "not a pair" x))) (define fxadd1-error (lambda (x) (if (fixnum? x) - (error 'fxadd1 "overflow") - (error 'fxadd1 "not a fixnum" x)))) + (die 'fxadd1 "overflow") + (die 'fxadd1 "not a fixnum" x)))) (define fxsub1-error (lambda (x) (if (fixnum? x) - (error 'fxsub1 "underflow") - (error 'fxsub1 "not a fixnum" x)))) + (die 'fxsub1 "underflow") + (die 'fxsub1 "not a fixnum" x)))) (define cadr-error (lambda (x) - (error 'cadr "invalid list structure" x))) + (die 'cadr "invalid list structure" x))) (define fx+-type-error (lambda (x) - (error 'fx+ "not a fixnum" x))) + (die 'fx+ "not a fixnum" x))) (define fx+-types-error (lambda (x y) - (error 'fx+ "not a fixnum" + (die 'fx+ "not a fixnum" (if (fixnum? x) y x)))) (define fx+-overflow-error (lambda (x y) - (error 'fx+ "overflow"))) + (die 'fx+ "overflow"))) (define $do-event (lambda () diff --git a/scheme/ikarus.hash-tables.ss b/scheme/ikarus.hash-tables.ss index 67aecfd..a1efe14 100644 --- a/scheme/ikarus.hash-tables.ss +++ b/scheme/ikarus.hash-tables.ss @@ -311,28 +311,28 @@ (if (and (or (fixnum? k) (bignum? k)) (>= k 0)) (make-eq-hashtable) - (error 'make-eq-hashtable + (die 'make-eq-hashtable "invalid initial capacity" k))])) (define hashtable-ref (lambda (h x v) (if (hasht? h) (get-hash h x v) - (error 'hashtable-ref "not a hash table" h)))) + (die 'hashtable-ref "not a hash table" h)))) (define hashtable-contains? (lambda (h x) (if (hasht? h) (in-hash? h x) - (error 'hashtable-contains? "not a hash table" h)))) + (die 'hashtable-contains? "not a hash table" h)))) (define hashtable-set! (lambda (h x v) (if (hasht? h) (if (hasht-mutable? h) (put-hash! h x v) - (error 'hashtable-set! "hashtable is immutable" h)) - (error 'hashtable-set! "not a hash table" h)))) + (die 'hashtable-set! "hashtable is immutable" h)) + (die 'hashtable-set! "not a hash table" h)))) (define hashtable-update! (lambda (h x proc default) @@ -340,15 +340,15 @@ (if (hasht-mutable? h) (if (procedure? proc) (update-hash! h x proc default) - (error 'hashtable-update! "not a procedure" proc)) - (error 'hashtable-update! "hashtable is immutable" h)) - (error 'hashtable-update! "not a hash table" h)))) + (die 'hashtable-update! "not a procedure" proc)) + (die 'hashtable-update! "hashtable is immutable" h)) + (die 'hashtable-update! "not a hash table" h)))) (define hashtable-size (lambda (h) (if (hasht? h) (hasht-count h) - (error 'hashtable-size "not a hash table" h)))) + (die 'hashtable-size "not a hash table" h)))) (define hashtable-delete! (lambda (h x) @@ -357,30 +357,30 @@ (if (hasht? h) (if (hasht-mutable? h) (del-hash h x) - (error 'hashtable-delete! "hashtable is immutable" h)) - (error 'hashtable-delete! "not a hash table" h)))) + (die 'hashtable-delete! "hashtable is immutable" h)) + (die 'hashtable-delete! "not a hash table" h)))) (define (hashtable-entries h) (if (hasht? h) (get-entries h) - (error 'hashtable-entries "not a hash table" h))) + (die 'hashtable-entries "not a hash table" h))) (define (hashtable-keys h) (if (hasht? h) (get-keys h) - (error 'hashtable-keys "not a hash table" h))) + (die 'hashtable-keys "not a hash table" h))) (define (hashtable-mutable? h) (if (hasht? h) (hasht-mutable? h) - (error 'hashtable-mutable? "not a hash table" h))) + (die 'hashtable-mutable? "not a hash table" h))) (define (hashtable-clear! h) (if (hasht? h) (if (hasht-mutable? h) (clear-hash! h) - (error 'hashtable-clear! "hashtable is immutable" h)) - (error 'hashtable-clear! "not a hash table" h))) + (die 'hashtable-clear! "hashtable is immutable" h)) + (die 'hashtable-clear! "not a hash table" h))) (define hashtable-copy (case-lambda @@ -389,28 +389,28 @@ (if (hasht-mutable? h) (hasht-copy h #f) h) - (error 'hashtable-copy "not a hash table" h))] + (die 'hashtable-copy "not a hash table" h))] [(h mutable?) (if (hasht? h) (if (or mutable? (hasht-mutable? h)) (hasht-copy h (and mutable? #t)) h) - (error 'hashtable-copy "not a hash table" h))])) + (die 'hashtable-copy "not a hash table" h))])) (define (string-hash s) (if (string? s) (foreign-call "ikrt_string_hash" s) - (error 'string-hash "not a string" s))) + (die 'string-hash "not a string" s))) (define (string-ci-hash s) (if (string? s) (foreign-call "ikrt_string_hash" (string-foldcase s)) - (error 'string-ci-hash "not a string" s))) + (die 'string-ci-hash "not a string" s))) (define (symbol-hash s) (if (symbol? s) (foreign-call "ikrt_string_hash" (symbol->string s)) - (error 'symbol-hash "not a symbol" s))) + (die 'symbol-hash "not a symbol" s))) ) diff --git a/scheme/ikarus.intel-assembler.ss b/scheme/ikarus.intel-assembler.ss index 19cd74f..1964818 100644 --- a/scheme/ikarus.intel-assembler.ss +++ b/scheme/ikarus.intel-assembler.ss @@ -73,7 +73,7 @@ (lambda (x) (cond [(assq x register-mapping) => caddr] - [else (error 'register-index "not a register" x)]))) + [else (die 'register-index "not a register" x)]))) (define reg32? (lambda (x) @@ -117,10 +117,10 @@ (let ([a1 ($car t)]) (if (null? ($cdr t)) (let () b b* ...) - (error 'with-args "too many args"))) - (error 'with-args "too few args"))) - (error 'with-args "too few args"))) - (error 'with-args "too few args")))])) + (die 'with-args "too many args"))) + (die 'with-args "too few args"))) + (die 'with-args "too few args"))) + (die 'with-args "too few args")))])) @@ -209,7 +209,7 @@ (cons (cons 'label-addr (label-name n)) ac)] [(foreign? n) (cons (cons 'foreign-label (label-name n)) ac)] - [else (error 'IMM32 "invalid" n)]))) + [else (die 'IMM32 "invalid" n)]))) (define IMM8 @@ -217,7 +217,7 @@ (cond [(int? n) (cons* (byte n) ac)] - [else (error 'IMM8 "invalid" n)]))) + [else (die 'IMM8 "invalid" n)]))) (define imm? @@ -244,7 +244,7 @@ (let ([d (cdr x)]) (unless (and (null? (cdr d)) (symbol? (car d))) - (error 'assemble "invalid label" x))) + (die 'assemble "invalid label" x))) #t] [else #f]))) @@ -256,7 +256,7 @@ (unless (and (null? (cdr d)) (or (symbol? (car d)) (string? (car d)))) - (error 'assemble "invalid label-address" x))) + (die 'assemble "invalid label-address" x))) #t] [else #f]))) @@ -280,7 +280,7 @@ (CODE c (ModRM 1 d s (IMM8 i ac)))] [(imm? i) (CODE c (ModRM 2 d s (IMM32 i ac)))] - [else (error 'CODErri "invalid i" i)]))) + [else (die 'CODErri "invalid i" i)]))) (define CODErr (lambda (c d s ac) @@ -294,8 +294,8 @@ (define RegReg (lambda (r1 r2 r3 ac) (cond - [(eq? r3 '%esp) (error 'assembler "BUG: invalid src %esp")] - [(eq? r1 '%ebp) (error 'assembler "BUG: invalid src %ebp")] + [(eq? r3 '%esp) (die 'assembler "BUG: invalid src %esp")] + [(eq? r1 '%ebp) (die 'assembler "BUG: invalid src %ebp")] [else (cons* (byte (fxlogor 4 (fxsll (register-index r1) 3))) @@ -314,7 +314,7 @@ [(and (int? i1) (int? i2)) ;FIXME (IMM32 i1 (IMM32 i2 ac))] - [else (error 'assemble "invalid IMM32*2" i1 i2)]))) + [else (die 'assemble "invalid IMM32*2" i1 i2)]))) (define CODErd (lambda (c r1 disp ac) @@ -331,7 +331,7 @@ (CODE c (ModRM 0 r1 '/5 (IMM32*2 a1 a2 ac)))] - [else (error 'CODErd "unhandled" disp)]))))) + [else (die 'CODErd "unhandled" disp)]))))) (define CODEdi (lambda (c /? disp n ac) @@ -339,14 +339,14 @@ (lambda (a1 a2) (cond [(and (reg? a1) (reg? a2)) - (error 'CODEdi "unsupported1" disp)] + (die 'CODEdi "unsupported1" disp)] [(and (imm? a1) (reg? a2)) (CODErri c /? a2 a1 (IMM32 n ac))] [(and (imm? a2) (reg? a1)) (CODErri c /? a1 a2 (IMM32 n ac))] [(and (imm? a1) (imm? a2)) - (error 'CODEdi "unsupported2" disp)] - [else (error 'CODEdi "unhandled" disp)]))))) + (die 'CODEdi "unsupported2" disp)] + [else (die 'CODEdi "unhandled" disp)]))))) (define (SIB s i b ac) (cons (byte @@ -376,8 +376,8 @@ (CODE c (ModRM 1 /d '/4 (SIB 0 a0 a1 (IMM8 0 ac))))] [(and (imm? a0) (imm? a1)) (CODE c (ModRM 0 /d '/5 (IMM32*2 a0 a1 ac)))] - [else (error 'CODE/digit "unhandled" a0 a1)])))] - [else (error 'CODE/digit "unhandled" dst)]))) + [else (die 'CODE/digit "unhandled" a0 a1)])))] + [else (die 'CODE/digit "unhandled" dst)]))) (define CODEid (lambda (c /? n disp ac) @@ -385,16 +385,16 @@ (lambda (a1 a2) (cond [(and (reg? a1) (reg? a2)) - (error 'CODEid "unsupported1" disp)] + (die 'CODEid "unsupported1" disp)] [(and (imm? a1) (reg? a2)) - (error 'CODEid "unsupported2") + (die 'CODEid "unsupported2") (CODErri c /? a2 a1 (IMM32 n ac))] [(and (imm? a2) (reg? a1)) - (error 'CODEid "unsupported3") + (die 'CODEid "unsupported3") (CODErri c /? a1 a2 (IMM32 n ac))] [(and (imm? a1) (imm? a2)) - (error 'CODEid "unsupported4")] - [else (error 'CODEid "unhandled" disp)]))))) + (die 'CODEid "unsupported4")] + [else (die 'CODEid "unhandled" disp)]))))) (define CODEdi8 (lambda (c /? disp n ac) @@ -426,20 +426,20 @@ [(fx= n 2) (if (fx= (length args) 2) (proc a ac (car args) (cadr args)) - (error 'convert-instruction "incorrect args" a))] + (die 'convert-instruction "incorrect args" a))] [(fx= n 1) (if (fx= (length args) 1) (proc a ac (car args)) - (error 'convert-instruction "incorrect args" a))] + (die 'convert-instruction "incorrect args" a))] [(fx= n 0) (if (fx= (length args) 0) (proc a ac) - (error 'convert-instruction "incorrect args" a))] + (die 'convert-instruction "incorrect args" a))] [else (if (fx= (length args) n) (apply proc a ac args) - (error 'convert-instruction "incorrect args" a))])))] - [else (error 'convert-instruction "unknown instruction" a)])) + (die 'convert-instruction "incorrect args" a))])))] + [else (die 'convert-instruction "unknown instruction" a)])) @@ -449,17 +449,17 @@ (cond [(reg? arg2) (CODEri ircode arg2 arg1 ac)] [(mem? arg2) (CODEdi imcode '/0 arg2 arg1 ac)] - [else (error 'instr/2 "invalid args" arg1 arg2)])] + [else (die 'instr/2 "invalid args" arg1 arg2)])] [(reg? arg1) (cond [(reg? arg2) (CODErr rrcode arg1 arg2 ac)] [(mem? arg2) (CODErd rmcode arg1 arg2 ac)] - [else (error 'instr/2 "invalid args" arg1 arg2)])] + [else (die 'instr/2 "invalid args" arg1 arg2)])] [(mem? arg1) (cond [(reg? arg2) (CODErd mrcode arg2 arg1 ac)] - [else (error 'instr/2 "invalid args" arg1 arg2)])] - [else (error 'instr/2 "invalid args" arg1 arg2)])) + [else (die 'instr/2 "invalid args" arg1 arg2)])] + [else (die 'instr/2 "invalid args" arg1 arg2)])) (module () (define who 'assembler) @@ -468,7 +468,7 @@ (cond [(reg8? dst) (CODE #x0F (CODE c (ModRM 3 '/0 dst ac)))] - [else (error who "invalid condition-set" dst)])) + [else (die who "invalid condition-set" dst)])) (define (conditional-jump c dst ac) (cond @@ -476,7 +476,7 @@ (CODE #x0F (CODE c (IMM32 dst ac)))] [(label? dst) (CODE #x0F (CODE c (cons (cons 'relative (label-name dst)) ac)))] - [else (error who "invalid conditional jump target" dst)])) + [else (die who "invalid conditional jump target" dst)])) (add-instructions instr ac [(ret) (CODE #xC3 ac)] @@ -489,67 +489,67 @@ ((CODE/digit #xC6 '/0) dst (IMM8 src ac))] [(and (reg8? src) (mem? dst)) (CODErd #x88 src dst ac)] [(and (mem? src) (reg8? dst)) (CODErd #x8A dst src ac)] - [else (error who "invalid" instr)])] + [else (die who "invalid" instr)])] [(movsd src dst) (cond [(and (xmmreg? dst) (or (xmmreg? src) (mem? src))) (CODE #xF2 (CODE #x0F ((CODE/digit #x10 dst) src ac)))] [(and (xmmreg? src) (or (xmmreg? dst) (mem? dst))) (CODE #xF2 (CODE #x0F ((CODE/digit #x11 src) dst ac)))] - [else (error who "invalid" instr)])] + [else (die who "invalid" instr)])] [(cvtsi2sd src dst) (cond [(and (xmmreg? dst) (reg? src)) (CODE #xF2 (CODE #x0F (CODE #x2A (ModRM 3 src dst ac))))] [(and (xmmreg? dst) (mem? src)) (CODE #xF2 (CODE #x0F ((CODE/digit #x2A dst) src ac)))] - [else (error who "invalid" instr)])] + [else (die who "invalid" instr)])] [(cvtsd2ss src dst) (cond [(and (xmmreg? dst) (reg? src)) (CODE #xF2 (CODE #x0F (CODE #x5A (ModRM 3 src dst ac))))] ;[(and (xmmreg? dst) (mem? src)) ; (CODE #xF2 (CODE #x0F ((CODE/digit #x5A dst) src ac)))] - [else (error who "invalid" instr)])] + [else (die who "invalid" instr)])] [(cvtss2sd src dst) (cond [(and (xmmreg? dst) (reg? src)) (CODE #xF3 (CODE #x0F (CODE #x5A (ModRM 3 src dst ac))))] ;[(and (xmmreg? dst) (mem? src)) ; (CODE #xF3 (CODE #x0F ((CODE/digit #x5A dst) src ac)))] - [else (error who "invalid" instr)])] + [else (die who "invalid" instr)])] [(movss src dst) (cond [(and (xmmreg? dst) (or (xmmreg? src) (mem? src))) (CODE #xF3 (CODE #x0F ((CODE/digit #x10 dst) src ac)))] [(and (xmmreg? src) (or (xmmreg? dst) (mem? dst))) (CODE #xF3 (CODE #x0F ((CODE/digit #x11 src) dst ac)))] - [else (error who "invalid" instr)])] + [else (die who "invalid" instr)])] [(addsd src dst) (cond [(and (xmmreg? dst) (or (xmmreg? src) (mem? src))) (CODE #xF2 (CODE #x0F ((CODE/digit #x58 dst) src ac)))] - [else (error who "invalid" instr)])] + [else (die who "invalid" instr)])] [(subsd src dst) (cond [(and (xmmreg? dst) (or (xmmreg? src) (mem? src))) (CODE #xF2 (CODE #x0F ((CODE/digit #x5C dst) src ac)))] - [else (error who "invalid" instr)])] + [else (die who "invalid" instr)])] [(mulsd src dst) (cond [(and (xmmreg? dst) (or (xmmreg? src) (mem? src))) (CODE #xF2 (CODE #x0F ((CODE/digit #x59 dst) src ac)))] - [else (error who "invalid" instr)])] + [else (die who "invalid" instr)])] [(divsd src dst) (cond [(and (xmmreg? dst) (or (xmmreg? src) (mem? src))) (CODE #xF2 (CODE #x0F ((CODE/digit #x5E dst) src ac)))] - [else (error who "invalid" instr)])] + [else (die who "invalid" instr)])] [(ucomisd src dst) (cond [(and (xmmreg? dst) (or (xmmreg? src) (mem? src))) (CODE #x66 (CODE #x0F ((CODE/digit #x2E dst) src ac)))] - [else (error who "invalid" instr)])] + [else (die who "invalid" instr)])] ;[(pshufb src dst) ; ;;; unfortunately, this is an SSE3 instr. ; (cond @@ -557,7 +557,7 @@ ; (CODE #x0F ; (CODE #x38 ; ((CODE/digit #x00 dst) src ac)))] - ; [else (error who "invalid" instr)])] + ; [else (die who "invalid" instr)])] [(addl src dst) (cond [(and (imm8? src) (reg? dst)) @@ -574,7 +574,7 @@ ((CODE/digit #x81 '/0) dst (IMM32 src ac))] [(and (reg? src) (mem? dst)) ((CODE/digit #x01 src) dst ac)] - [else (error who "invalid" instr)])] + [else (die who "invalid" instr)])] [(subl src dst) (cond [(and (imm8? src) (reg? dst)) @@ -591,7 +591,7 @@ ((CODE/digit #x81 '/5) dst (IMM32 src ac))] [(and (reg? src) (mem? dst)) ((CODE/digit #x29 src) dst ac)] - [else (error who "invalid" instr)])] + [else (die who "invalid" instr)])] [(sall src dst) (cond [(and (equal? 1 src) (reg? dst)) @@ -604,7 +604,7 @@ (CODE #xD3 (ModRM 3 '/4 dst ac))] [(and (eq? src '%cl) (mem? dst)) ((CODE/digit #xD3 '/4) dst ac)] - [else (error who "invalid" instr)])] + [else (die who "invalid" instr)])] [(shrl src dst) (cond [(and (equal? 1 src) (reg? dst)) @@ -617,7 +617,7 @@ ((CODE/digit #xC1 '/5) dst (IMM8 src ac))] [(and (eq? src '%cl) (mem? dst)) ((CODE/digit #xD3 '/5) dst ac)] - [else (error who "invalid" instr)])] + [else (die who "invalid" instr)])] [(sarl src dst) (cond [(and (equal? 1 src) (reg? dst)) @@ -630,7 +630,7 @@ (CODE #xD3 (ModRM 3 '/7 dst ac))] [(and (eq? src '%cl) (mem? dst)) ((CODE/digit #xD3 '/7) dst ac)] - [else (error who "invalid" instr)])] + [else (die who "invalid" instr)])] [(andl src dst) (cond [(and (imm? src) (mem? dst)) @@ -647,7 +647,7 @@ ((CODE/digit #x21 src) dst ac)] [(and (mem? src) (reg? dst)) (CODErd #x23 dst src ac)] - [else (error who "invalid" instr)])] + [else (die who "invalid" instr)])] [(orl src dst) (cond [(and (imm? src) (mem? dst)) @@ -664,7 +664,7 @@ (CODE #x09 (ModRM 3 src dst ac))] [(and (mem? src) (reg? dst)) (CODErd #x0B dst src ac)] - [else (error who "invalid" instr)])] + [else (die who "invalid" instr)])] [(xorl src dst) (cond [(and (imm8? src) (reg? dst)) @@ -681,12 +681,12 @@ ((CODE/digit #x31 src) dst ac)] ;[(and (imm? src) (mem? dst)) ; ((CODE/digit #x81 '/6) dst (IMM32 src ac))] - [else (error who "invalid" instr)])] + [else (die who "invalid" instr)])] [(leal src dst) (cond [(and (mem? src) (reg? dst)) (CODErd #x8D dst src ac)] - [else (error who "invalid" instr)])] + [else (die who "invalid" instr)])] [(cmpl src dst) (cond [(and (imm8? src) (reg? dst)) @@ -700,12 +700,12 @@ [(and (mem? src) (reg? dst)) (CODErd #x3B dst src ac)] [(and (imm8? src) (mem? dst)) - ;;; maybe error + ;;; maybe die (CODErd #x83 '/7 dst (IMM8 src ac))] [(and (imm? src) (mem? dst)) - ;;; maybe error + ;;; maybe die (CODErd #x81 '/7 dst (IMM32 src ac))] - [else (error who "invalid" instr)])] + [else (die who "invalid" instr)])] [(imull src dst) (cond [(and (imm8? src) (reg? dst)) @@ -716,15 +716,15 @@ (CODE #x0F (CODE #xAF (ModRM 3 dst src ac)))] [(and (mem? src) (reg? dst)) (CODE #x0F (CODErd #xAF dst src ac))] - [else (error who "invalid" instr)])] + [else (die who "invalid" instr)])] [(idivl dst) (cond [(reg? dst) (CODErr #xF7 '/7 dst ac)] [(mem? dst) - ;;; maybe error + ;;; maybe die (CODErd #xF7 '/7 dst ac)] - [else (error who "invalid" instr)])] + [else (die who "invalid" instr)])] [(pushl dst) (cond [(imm8? dst) @@ -734,35 +734,35 @@ [(reg? dst) (CODE+r #x50 dst ac)] [(mem? dst) - ;;; maybe error + ;;; maybe die (CODErd #xFF '/6 dst ac)] - [else (error who "invalid" instr)])] + [else (die who "invalid" instr)])] [(popl dst) (cond [(reg? dst) (CODE+r #x58 dst ac)] [(mem? dst) - ;;; maybe error + ;;; maybe die (CODErd #x8F '/0 dst ac)] - [else (error who "invalid" instr)])] + [else (die who "invalid" instr)])] [(notl dst) (cond [(reg? dst) (CODE #xF7 (ModRM 3 '/2 dst ac))] [(mem? dst) - ;;; maybe error + ;;; maybe die (CODErd #xF7 '/7 dst ac)] - [else (error who "invalid" instr)])] + [else (die who "invalid" instr)])] [(bswap dst) (cond [(reg? dst) (CODE #x0F (CODE+r #xC8 dst ac))] - [else (error who "invalid" instr)])] + [else (die who "invalid" instr)])] [(negl dst) (cond [(reg? dst) (CODE #xF7 (ModRM 3 '/3 dst ac))] - [else (error who "invalid" instr)])] + [else (die who "invalid" instr)])] [(jmp dst) (cond [(label? dst) @@ -770,9 +770,9 @@ [(imm? dst) (CODE #xE9 (IMM32 dst ac))] [(mem? dst) - ;;; maybe error + ;;; maybe die (CODErd #xFF '/4 dst ac)] - [else (error who "invalid jmp target" dst)])] + [else (die who "invalid jmp target" dst)])] [(call dst) (cond [(imm? dst) @@ -780,11 +780,11 @@ [(label? dst) (CODE #xE8 (cons (cons 'relative (label-name dst)) ac))] [(mem? dst) - ;;; maybe error + ;;; maybe die (CODErd #xFF '/2 dst ac)] [(reg? dst) (CODE #xFF (ModRM 3 '/2 dst ac))] - [else (error who "invalid jmp target" dst)])] + [else (die who "invalid jmp target" dst)])] [(seta dst) (conditional-set #x97 dst ac)] [(setae dst) (conditional-set #x93 dst ac)] [(setb dst) (conditional-set #x92 dst ac)] @@ -825,15 +825,15 @@ [(jp dst) (conditional-jump #x8A dst ac)] [(jnp dst) (conditional-jump #x8B dst ac)] [(byte x) - (unless (byte? x) (error who "not a byte" x)) + (unless (byte? x) (die who "not a byte" x)) (cons (byte x) ac)] [(byte-vector x) (append (map (lambda (x) (byte x)) (vector->list x)) ac)] [(int a) (IMM32 a ac)] [(label L) - (unless (symbol? L) (error who "label is not a symbol" L)) + (unless (symbol? L) (die who "label is not a symbol" L)) (cons (cons 'label L) ac)] [(label-address L) - (unless (symbol? L) (error who "label-address is not a symbol" L)) + (unless (symbol? L) (die who "label-address is not a symbol" L)) (cons (cons 'label-addr L) ac)] [(current-frame-offset) (cons '(current-frame-offset) ac)] @@ -853,7 +853,7 @@ relative local-relative current-frame-offset) (fx+ ac 4)] [(label) ac] - [else (error 'compute-code-size "unknown instr" x)]))) + [else (die 'compute-code-size "unknown instr" x)]))) 0 ls))) @@ -861,13 +861,13 @@ (define set-label-loc! (lambda (x loc) (when (getprop x '*label-loc*) - (error 'compile "label is already defined" x)) + (die 'compile "label is already defined" x)) (putprop x '*label-loc* loc))) (define label-loc (lambda (x) (or (getprop x '*label-loc*) - (error 'compile "undefined label" x)))) + (die 'compile "undefined label" x)))) (define unset-label-loc! @@ -883,7 +883,7 @@ (code-set! code (fx+ idx 1) (fxlogand (fxsra x 6) #xFF)) (code-set! code (fx+ idx 2) (fxlogand (fxsra x 14) #xFF)) (code-set! code (fx+ idx 3) (fxlogand (fxsra x 22) #xFF))] - [else (error 'set-code-word! "unhandled" x)]))) + [else (die 'set-code-word! "unhandled" x)]))) (define (optimize-local-jumps ls) (define locals '()) @@ -937,7 +937,7 @@ (set-label-loc! (cdr a) (list x idx)) (f (cdr ls) idx reloc)] [else - (error 'whack-instructions "unknown instr" a)])))]))) + (die 'whack-instructions "unknown instr" a)])))]))) (f ls 0 '()))) (define wordsize 4) @@ -952,7 +952,7 @@ [(reloc-word foreign-label) (fx+ ac 2)] [(relative reloc-word+ label-addr) (fx+ ac 3)] [(word byte label current-frame-offset local-relative) ac] - [else (error 'compute-reloc-size "unknown instr" x)]))) + [else (die 'compute-reloc-size "unknown instr" x)]))) 0 ls))) @@ -972,7 +972,7 @@ (define code-entry-adjustment (let ([v #f]) (case-lambda - [() (or v (error 'code-entry-adjustment "uninitialized"))] + [() (or v (die 'code-entry-adjustment "uninitialized"))] [(x) (set! v x)]))) (define whack-reloc @@ -990,7 +990,7 @@ [(fx= (length p) 2) (let ([code (car p)] [idx (cadr p)]) (unless (fx= idx 0) - (error 'whack-reloc + (die 'whack-reloc "cannot create a thunk pointing" idx)) (let ([thunk (code->thunk code)]) @@ -1009,7 +1009,7 @@ (let ([name (if (string? v) (foreign-string->bytevector v) - (error 'whack-reloc "not a string" v))]) + (die 'whack-reloc "not a string" v))]) (vector-set! vec reloc-idx (fxlogor 1 (fxsll idx 2))) (vector-set! vec (fx+ reloc-idx 1) name) (set! reloc-idx (fx+ reloc-idx 2)))] @@ -1031,7 +1031,7 @@ (let ([loc (label-loc v)]) (let ([obj (car loc)] [disp (cadr loc)]) (unless (eq? obj code) - (error 'whack-reloc "local-relative differ")) + (die 'whack-reloc "local-relative differ")) (let ([rel (fx- disp (fx+ idx 4))]) (code-set! code (fx+ idx 0) (fxlogand rel #xFF)) (code-set! code (fx+ idx 1) (fxlogand (fxsra rel 8) #xFF)) @@ -1041,13 +1041,13 @@ (let ([loc (label-loc v)]) (let ([obj (car loc)] [disp (cadr loc)]) (unless (and (code? obj) (fixnum? disp)) - (error 'whack-reloc "invalid relative jump obj/disp" obj disp)) + (die 'whack-reloc "invalid relative jump obj/disp" obj disp)) (vector-set! vec reloc-idx (fxlogor 3 (fxsll idx 2))) (vector-set! vec (fx+ reloc-idx 1) (fx+ disp (code-entry-adjustment))) (vector-set! vec (fx+ reloc-idx 2) obj))) (set! reloc-idx (fx+ reloc-idx 3))] - [else (error 'whack-reloc "invalid reloc type" type)])) + [else (die 'whack-reloc "invalid reloc type" type)])) ))) diff --git a/scheme/ikarus.io.ss b/scheme/ikarus.io.ss index 76db540..bf8fbbd 100644 --- a/scheme/ikarus.io.ss +++ b/scheme/ikarus.io.ss @@ -164,7 +164,7 @@ (syntax-rules () [(_ name) (define (name . args) - (apply error 'name "not implemented" args))])) + (apply die 'name "not implemented" args))])) (define-syntax u8? @@ -223,17 +223,17 @@ (define (input-port-name p) (if (input-port? p) ($port-id p) - (error 'input-port-name "not an input port" p))) + (die 'input-port-name "not an input port" p))) (define (output-port-name p) (if (output-port? p) ($port-id p) - (error 'output-port-name "not an output port" p))) + (die 'output-port-name "not an output port" p))) (define (port-id p) (if (port? p) ($port-id p) - (error 'port-id "not a port" p))) + (die 'port-id "not a port" p))) (define guarded-port (let ([G (make-guardian)]) @@ -266,11 +266,11 @@ ;;; FIXME: get-position and set-position! are ignored for now (define who 'make-custom-binary-input-port) (unless (string? id) - (error who "id is not a string" id)) + (die who "id is not a string" id)) (unless (procedure? read!) - (error who "read! is not a procedure" read!)) + (die who "read! is not a procedure" read!)) (unless (or (procedure? close) (not close)) - (error who "close should be either a procedure or #f" close)) + (die who "close should be either a procedure or #f" close)) ($make-custom-binary-port binary-input-port-bits 0 @@ -282,11 +282,11 @@ ;;; FIXME: get-position and set-position! are ignored for now (define who 'make-custom-binary-output-port) (unless (string? id) - (error who "id is not a string" id)) + (die who "id is not a string" id)) (unless (procedure? write!) - (error who "write! is not a procedure" write!)) + (die who "write! is not a procedure" write!)) (unless (or (procedure? close) (not close)) - (error who "close should be either a procedure or #f" close)) + (die who "close should be either a procedure or #f" close)) ($make-custom-binary-port binary-output-port-bits 256 @@ -298,11 +298,11 @@ ;;; FIXME: get-position and set-position! are ignored for now (define who 'make-custom-textual-input-port) (unless (string? id) - (error who "id is not a string" id)) + (die who "id is not a string" id)) (unless (procedure? read!) - (error who "read! is not a procedure" read!)) + (die who "read! is not a procedure" read!)) (unless (or (procedure? close) (not close)) - (error who "close should be either a procedure or #f" close)) + (die who "close should be either a procedure or #f" close)) ($make-custom-textual-port (fxior textual-input-port-bits fast-char-text-tag) 0 @@ -314,11 +314,11 @@ ;;; FIXME: get-position and set-position! are ignored for now (define who 'make-custom-textual-output-port) (unless (string? id) - (error who "id is not a string" id)) + (die who "id is not a string" id)) (unless (procedure? write!) - (error who "write! is not a procedure" write!)) + (die who "write! is not a procedure" write!)) (unless (or (procedure? close) (not close)) - (error who "close should be either a procedure or #f" close)) + (die who "close should be either a procedure or #f" close)) ($make-custom-textual-port (fxior textual-output-port-bits fast-char-text-tag) 256 @@ -355,11 +355,11 @@ [(bv) (open-bytevector-input-port bv #f)] [(bv maybe-transcoder) (unless (bytevector? bv) - (error 'open-bytevector-input-port + (die 'open-bytevector-input-port "not a bytevector" bv)) (when (and maybe-transcoder (not (transcoder? maybe-transcoder))) - (error 'open-bytevector-input-port + (die 'open-bytevector-input-port "not a transcoder" maybe-transcoder)) ($make-port (input-transcoder-attrs maybe-transcoder) @@ -379,7 +379,7 @@ [(transcoder) (define who 'open-bytevector-output-port) (unless (or (not transcoder) (transcoder? transcoder)) - (error who "invalid transcoder value" transcoder)) + (die who "invalid transcoder value" transcoder)) (let ([buf* '()] [buffer-size 256]) (let ([p ($make-port @@ -424,9 +424,9 @@ [(proc transcoder) (define who 'call-with-bytevector-output-port) (unless (procedure? proc) - (error who "not a procedure" proc)) + (die who "not a procedure" proc)) (unless (or (not transcoder) (transcoder? transcoder)) - (error who "invalid transcoder argument" transcoder)) + (die who "invalid transcoder argument" transcoder)) (let-values ([(p extract) (open-bytevector-output-port transcoder)]) (proc p) @@ -435,7 +435,7 @@ (define (call-with-string-output-port proc) (define who 'call-with-string-output-port) (unless (procedure? proc) - (error who "not a procedure" proc)) + (die who "not a procedure" proc)) (let-values ([(p extract) (open-string-output-port)]) (proc p) (extract))) @@ -482,7 +482,7 @@ (define (open-string-input-port str) (unless (string? str) - (error 'open-string-input-port str)) + (die 'open-string-input-port str)) ($make-port (fxior textual-input-port-bits fast-char-text-tag) 0 (string-length str) str @@ -499,10 +499,10 @@ (define (transcoded-port p transcoder) (define who 'transcoded-port) (unless (transcoder? transcoder) - (error who "not a transcoder" transcoder)) - (unless (port? p) (error who "not a port" p)) - (when ($port-transcoder p) (error who "not a binary port" p)) - (when ($port-closed? p) (error who "cannot transcode closed port" p)) + (die who "not a transcoder" transcoder)) + (unless (port? p) (die who "not a port" p)) + (when ($port-transcoder p) (die who "not a binary port" p)) + (when ($port-closed? p) (die who "cannot transcode closed port" p)) (let ([read! ($port-read! p)] [write! ($port-write! p)]) ($mark-port-closed! p) @@ -512,7 +512,7 @@ [read! (input-transcoder-attrs transcoder)] [write! (output-transcoder-attrs transcoder)] [else - (error 'transcoded-port + (die 'transcoded-port "port is neither input nor output!")]) ($port-index p) ($port-size p) @@ -529,13 +529,13 @@ (define (reset-input-port! p) (if (input-port? p) ($set-port-index! p ($port-size p)) - (error 'reset-input-port! "not an input port" p))) + (die 'reset-input-port! "not an input port" p))) (define (port-transcoder p) (if (port? p) (let ([tr ($port-transcoder p)]) (and (transcoder? tr) tr)) - (error 'port-transcoder "not a port" p))) + (die 'port-transcoder "not a port" p))) (define ($port-closed? p) (not (fxzero? (fxand ($port-attrs p) closed-port-tag)))) @@ -550,7 +550,7 @@ (if (fxzero? (fxand ($port-attrs p) r6rs-mode-tag)) 'ikarus-mode 'r6rs-mode) - (error 'port-mode "not a port" p))) + (die 'port-mode "not a port" p))) (define (set-port-mode! p mode) (if (port? p) @@ -561,8 +561,8 @@ [(ikarus-mode) ($set-port-attrs! p (fxand ($port-attrs p) (fxnot r6rs-mode-tag)))] - [else (error 'set-port-mode! "invalid mode" mode)]) - (error 'set-port-mode! "not a port" p))) + [else (die 'set-port-mode! "invalid mode" mode)]) + (die 'set-port-mode! "not a port" p))) (define flush-output-port @@ -570,22 +570,22 @@ [() (flush-output-port (*the-output-port*))] [(p) (unless (output-port? p) - (error 'flush-output-port "not an output port" p)) + (die 'flush-output-port "not an output port" p)) (when ($port-closed? p) - (error 'flush-output-port "port is closed" p)) + (die 'flush-output-port "port is closed" p)) (let ([idx ($port-index p)] [buf ($port-buffer p)]) (unless (fx= idx 0) (let ([bytes (($port-write! p) buf 0 idx)]) (unless (and (fixnum? bytes) (fx>= bytes 0) (fx<= bytes idx)) - (error 'flush-output-port + (die 'flush-output-port "write! returned an invalid value" bytes)) (cond [(fx= bytes idx) ($set-port-index! p 0)] [(fx= bytes 0) - (error 'flush-output-port "could not write bytes to sink")] + (die 'flush-output-port "could not write bytes to sink")] [else (bytevector-copy! buf bytes buf 0 (fx- idx bytes)) ($set-port-index! p (fx- idx bytes)) @@ -604,17 +604,17 @@ (define (close-port p) (unless (port? p) - (error 'close-port "not a port" p)) + (die 'close-port "not a port" p)) ($close-port p)) (define (close-input-port p) (unless (input-port? p) - (error 'close-input-port "not an input port" p)) + (die 'close-input-port "not an input port" p)) ($close-port p)) (define (close-output-port p) (unless (output-port? p) - (error 'close-output-port "not an output port" p)) + (die 'close-output-port "not an output port" p)) ($close-port p)) ;(define-rrr port-has-port-position?) @@ -626,39 +626,39 @@ (module (get-char lookahead-char) (import UNSAFE) (define (refill-bv-start p who) - (when ($port-closed? p) (error who "port is closed" p)) + (when ($port-closed? p) (die who "port is closed" p)) (let* ([bv ($port-buffer p)] [n (bytevector-length bv)]) (let ([j (($port-read! p) bv 0 n)]) (unless (fixnum? j) - (error who "invalid return value from read! procedure" j)) + (die who "invalid return value from read! procedure" j)) (cond [(fx>= j 0) (unless (fx<= j n) - (error who "read! returned a value out of range" j)) + (die who "read! returned a value out of range" j)) ($set-port-index! p 0) ($set-port-size! p j) j] [else - (error who "read! returned a value out of range" j)])))) + (die who "read! returned a value out of range" j)])))) (define (refill-bv-buffer p who) - (when ($port-closed? p) (error who "port is closed" p)) + (when ($port-closed? p) (die who "port is closed" p)) (let ([bv ($port-buffer p)] [i ($port-index p)] [j ($port-size p)]) (let ([c0 (fx- j i)]) (bytevector-copy! bv i bv 0 c0) (let* ([max (fx- (bytevector-length bv) c0)] [c1 (($port-read! p) bv c0 max)]) (unless (fixnum? c1) - (error who "invalid return value from read! procedure" c1)) + (die who "invalid return value from read! procedure" c1)) (cond [(fx>= j 0) (unless (fx<= j max) - (error who "read! returned a value out of range" j)) + (die who "read! returned a value out of range" j)) ($set-port-index! p c0) ($set-port-size! p (fx+ c1 c0)) c1] [else - (error who "read! returned a value out of range" c1)]))))) + (die who "read! returned a value out of range" c1)]))))) (define (get-char-latin-mode p who idx) (let ([n (refill-bv-start p who)]) (cond @@ -674,7 +674,7 @@ [(replace) #\xFFFD] [(raise) (raise (make-i/o-decoding-error p))] - [else (error who "cannot happen")])) + [else (die who "cannot happen")])) (let ([i ($port-index p)] [j ($port-size p)] [buf ($port-buffer p)]) @@ -777,7 +777,7 @@ [(replace) #\xFFFD] [(raise) (raise (make-i/o-decoding-error p))] - [else (error who "cannot happen")])) + [else (die who "cannot happen")])) (let ([i ($port-index p)] [j ($port-size p)] [buf ($port-buffer p)]) @@ -890,26 +890,26 @@ (define (speedup-input-port p who) ;;; returns #t if port is eof, #f otherwise (unless (input-port? p) - (error who "not an input port" p)) + (die who "not an input port" p)) (let ([tr ($port-transcoder p)]) (unless tr - (error who "not a textual port" p)) + (die who "not a textual port" p)) (case (transcoder-codec tr) [(utf-8-codec) ;;; ($set-port-attrs! p (fxior textual-input-port-bits fast-u7-text-tag)) (eof-object? (advance-bom p who '(#xEF #xBB #xBF)))] - [else (error 'slow-get-char "codec not handled")]))) + [else (die 'slow-get-char "codec not handled")]))) (define (lookahead-char-char-mode p who) (let ([str ($port-buffer p)] [read! ($port-read! p)]) (let ([n (read! str 0 (string-length str))]) (unless (fixnum? n) - (error who "invalid return value from read!" n)) + (die who "invalid return value from read!" n)) (unless (<= 0 n (string-length str)) - (error who "return value from read! is out of range" n)) + (die who "return value from read! is out of range" n)) ($set-port-index! p 0) ($set-port-size! p n) (cond @@ -957,9 +957,9 @@ [read! ($port-read! p)]) (let ([n (read! str 0 (string-length str))]) (unless (fixnum? n) - (error who "invalid return value from read!" n)) + (die who "invalid return value from read!" n)) (unless (<= 0 n (string-length str)) - (error who "return value from read! is out of range" n)) + (die who "return value from read! is out of range" n)) ($set-port-size! p n) (cond [(fx= n 0) @@ -1008,31 +1008,31 @@ ;;; ---------------------------------------------------------- (define (assert-binary-input-port p who) - (unless (port? p) (error who "not a port" p)) - (when ($port-closed? p) (error who "port is closed" p)) - (when ($port-transcoder p) (error who "port is not binary" p)) + (unless (port? p) (die who "not a port" p)) + (when ($port-closed? p) (die who "port is closed" p)) + (when ($port-transcoder p) (die who "port is not binary" p)) (unless ($port-read! p) - (error who "port is not an input port" p))) + (die who "port is not an input port" p))) (module (get-u8 lookahead-u8) (import UNSAFE) (define (get-u8-byte-mode p who start) - (when ($port-closed? p) (error who "port is closed" p)) + (when ($port-closed? p) (die who "port is closed" p)) (let* ([bv ($port-buffer p)] [n (bytevector-length bv)]) (let ([j (($port-read! p) bv 0 n)]) (unless (fixnum? j) - (error who "invalid return value from read! procedure" j)) + (die who "invalid return value from read! procedure" j)) (cond [(fx> j 0) (unless (fx<= j n) - (error who "read! returned a value out of range" j)) + (die who "read! returned a value out of range" j)) ($set-port-index! p start) ($set-port-size! p j) (bytevector-u8-ref bv 0)] [(fx= j 0) (eof-object)] [else - (error who "read! returned a value out of range" j)])))) + (die who "read! returned a value out of range" j)])))) (define (slow-get-u8 p who start) (assert-binary-input-port p who) ($set-port-attrs! p fast-get-byte-tag) @@ -1075,14 +1075,14 @@ (eof-object? (lookahead-u8 p))))] [(input-port? p) (when ($port-closed? p) - (error 'port-eof? "port is closed" p)) + (die 'port-eof? "port is closed" p)) (if (textual-port? p) (eof-object? (lookahead-char p)) (eof-object? (lookahead-u8 p)))] - [else (error 'port-eof? "not an input port" p)]))) + [else (die 'port-eof? "not an input port" p)]))) (define io-errors-vec - '#("unknown error" + '#("unknown die" "bad file name" "operation interrupted" "not a directory" @@ -1098,7 +1098,7 @@ "operation not supported" "not enough space on device" "quota exceeded" - "io error" + "io die" "device is busy" "access fault" "file already exists" @@ -1110,9 +1110,10 @@ (cond [(fx< err (vector-length io-errors-vec)) (vector-ref io-errors-vec err)] - [else "unknown error"]))]) + [else "unknown die"]))]) (raise (condition + (make-error) (make-who-condition who) (make-message-condition msg) (make-i/o-filename-error id))))) @@ -1186,7 +1187,7 @@ [(fo:no-truncate/no-create) 5] [(fo:no-truncate/no-fail) 6] [(fo:no-truncate/no-fail/no-create) 7] - [else (error who "invalid file option" file-options)])]) + [else (die who "invalid file option" file-options)])]) (let ([fh (foreign-call "ikrt_open_output_fd" (string->utf8 filename) opt)]) @@ -1204,9 +1205,9 @@ (open-file-input-port filename file-options buffer-mode #f)] [(filename file-options buffer-mode transcoder) (unless (string? filename) - (error 'open-file-input-port "invalid filename" filename)) + (die 'open-file-input-port "invalid filename" filename)) (unless (or (not transcoder) (transcoder? transcoder)) - (error 'open-file-input-port "invalid transcoder" transcoder)) + (die 'open-file-input-port "invalid transcoder" transcoder)) ; FIXME: file-options ignored ; FIXME: buffer-mode ignored (fh->input-port @@ -1227,11 +1228,11 @@ (open-file-output-port filename file-options buffer-mode #f)] [(filename file-options buffer-mode transcoder) (unless (string? filename) - (error 'open-file-output-port "invalid filename" filename)) + (die 'open-file-output-port "invalid filename" filename)) ; FIXME: file-options ignored ; FIXME: buffer-mode ignored (unless (or (not transcoder) (transcoder? transcoder)) - (error 'open-file-output-port "invalid transcoder" transcoder)) + (die 'open-file-output-port "invalid transcoder" transcoder)) (fh->output-port (open-output-file-handle filename file-options 'open-file-output-port) @@ -1242,7 +1243,7 @@ (define (open-output-file filename) (unless (string? filename) - (error 'open-output-file "invalid filename" filename)) + (die 'open-output-file "invalid filename" filename)) (fh->output-port (open-output-file-handle filename (file-options) 'open-input-file) @@ -1253,7 +1254,7 @@ (define (open-input-file filename) (unless (string? filename) - (error 'open-input-file "invalid filename" filename)) + (die 'open-input-file "invalid filename" filename)) (fh->input-port (open-input-file-handle filename 'open-input-file) filename @@ -1263,9 +1264,9 @@ (define (call-with-input-file filename proc) (unless (string? filename) - (error 'call-with-input-file "invalid filename" filename)) + (die 'call-with-input-file "invalid filename" filename)) (unless (procedure? proc) - (error 'call-with-input-file "not a procedure" proc)) + (die 'call-with-input-file "not a procedure" proc)) (call-with-port (fh->input-port (open-input-file-handle filename 'call-with-input-file) @@ -1277,9 +1278,9 @@ (define (with-input-from-file filename proc) (unless (string? filename) - (error 'with-input-from-file "invalid filename" filename)) + (die 'with-input-from-file "invalid filename" filename)) (unless (procedure? proc) - (error 'with-input-from-file "not a procedure" proc)) + (die 'with-input-from-file "not a procedure" proc)) (let ([p (fh->input-port (open-input-file-handle filename 'with-input-from-file) @@ -1340,8 +1341,8 @@ void (lambda () (proc p)) (lambda () (close-port p))) - (error 'call-with-port "not a procedure" proc)) - (error 'call-with-port "not a port" p))) + (die 'call-with-port "not a procedure" proc)) + (die 'call-with-port "not a port" p))) (define read-char (case-lambda @@ -1350,8 +1351,8 @@ (if (input-port? p) (if (textual-port? p) (get-char p) - (error 'read-char "not a textual port" p)) - (error 'read-char "not an input-port" p))])) + (die 'read-char "not a textual port" p)) + (die 'read-char "not an input-port" p))])) ;;; (define peek-char (case-lambda @@ -1360,8 +1361,8 @@ (if (input-port? p) (if (textual-port? p) (lookahead-char p) - (error 'peek-char "not a textual port" p)) - (error 'peek-char "not an input-port" p))])) + (die 'peek-char "not a textual port" p)) + (die 'peek-char "not an input-port" p))])) (define (get-bytevector-n p n) (import (ikarus system $fx) (ikarus system $bytevectors)) @@ -1374,11 +1375,11 @@ p (f s n p)))))) (unless (input-port? p) - (error 'get-bytevector-n "not an input port" p)) + (die 'get-bytevector-n "not an input port" p)) (unless (binary-port? p) - (error 'get-bytevector-n "not a binary port" p)) + (die 'get-bytevector-n "not a binary port" p)) (unless (fixnum? n) - (error 'get-bytevector-n "count is not a fixnum" n)) + (die 'get-bytevector-n "count is not a fixnum" n)) (cond [($fx> n 0) (let ([s ($make-bytevector n)]) @@ -1396,30 +1397,30 @@ s (f p n s i)))]))))] [($fx= n 0) '#vu8()] - [else (error 'get-bytevector-n "count is negative" n)])) + [else (die 'get-bytevector-n "count is negative" n)])) (define (get-bytevector-n! p s i c) (import (ikarus system $fx) (ikarus system $bytevectors)) (unless (input-port? p) - (error 'get-bytevector-n! "not an input port" p)) + (die 'get-bytevector-n! "not an input port" p)) (unless (binary-port? p) - (error 'get-bytevector-n! "not a binary port" p)) + (die 'get-bytevector-n! "not a binary port" p)) (unless (bytevector? s) - (error 'get-bytevector-n! "not a bytevector" s)) + (die 'get-bytevector-n! "not a bytevector" s)) (let ([len ($bytevector-length s)]) (unless (fixnum? i) - (error 'get-bytevector-n! "starting index is not a fixnum" i)) + (die 'get-bytevector-n! "starting index is not a fixnum" i)) (when (or ($fx< i 0) ($fx> i len)) - (error 'get-bytevector-n! + (die 'get-bytevector-n! (format "starting index is out of range 0..~a" len) i)) (unless (fixnum? c) - (error 'get-bytevector-n! "count is not a fixnum" c)) + (die 'get-bytevector-n! "count is not a fixnum" c)) (cond [($fx> c 0) (let ([j (+ i c)]) (when (> j len) - (error 'get-bytevector-n! + (die 'get-bytevector-n! (format "count is out of range 0..~a" (- len i)) c)) (let ([x (get-u8 p)]) @@ -1438,7 +1439,7 @@ i (f p s start i c)))])))])))] [($fx= c 0) 0] - [else (error 'get-bytevector-n! "count is negative" c)]))) + [else (die 'get-bytevector-n! "count is negative" c)]))) (define-rrr get-bytevector-some) @@ -1462,17 +1463,17 @@ (if (input-port? p) (if (binary-port? p) (get-it p) - (error 'get-bytevector-all "not a binary port" p)) - (error 'get-bytevector-all "not an input port" p))) + (die 'get-bytevector-all "not a binary port" p)) + (die 'get-bytevector-all "not an input port" p))) (define (get-string-n p n) (import (ikarus system $fx) (ikarus system $strings)) (unless (input-port? p) - (error 'get-string-n "not an input port" p)) + (die 'get-string-n "not an input port" p)) (unless (textual-port? p) - (error 'get-string-n "not a textual port" p)) + (die 'get-string-n "not a textual port" p)) (unless (fixnum? n) - (error 'get-string-n "count is not a fixnum" n)) + (die 'get-string-n "count is not a fixnum" n)) (cond [($fx> n 0) (let ([s ($make-string n)]) @@ -1490,30 +1491,30 @@ s (f p n s i)))]))))] [($fx= n 0) ""] - [else (error 'get-string-n "count is negative" n)])) + [else (die 'get-string-n "count is negative" n)])) (define (get-string-n! p s i c) (import (ikarus system $fx) (ikarus system $strings)) (unless (input-port? p) - (error 'get-string-n! "not an input port" p)) + (die 'get-string-n! "not an input port" p)) (unless (textual-port? p) - (error 'get-string-n! "not a textual port" p)) + (die 'get-string-n! "not a textual port" p)) (unless (string? s) - (error 'get-string-n! "not a string" s)) + (die 'get-string-n! "not a string" s)) (let ([len ($string-length s)]) (unless (fixnum? i) - (error 'get-string-n! "starting index is not a fixnum" i)) + (die 'get-string-n! "starting index is not a fixnum" i)) (when (or ($fx< i 0) ($fx> i len)) - (error 'get-string-n! + (die 'get-string-n! (format "starting index is out of range 0..~a" len) i)) (unless (fixnum? c) - (error 'get-string-n! "count is not a fixnum" c)) + (die 'get-string-n! "count is not a fixnum" c)) (cond [($fx> c 0) (let ([j (+ i c)]) (when (> j len) - (error 'get-string-n! + (die 'get-string-n! (format "count is out of range 0..~a" (- len i)) c)) (let ([x (get-char p)]) @@ -1532,7 +1533,7 @@ i (f p s start i c)))])))])))] [($fx= c 0) 0] - [else (error 'get-string-n! "count is negative" c)]))) + [else (die 'get-string-n! "count is negative" c)]))) (define (get-line p) (import UNSAFE) @@ -1555,8 +1556,8 @@ (if (input-port? p) (if (textual-port? p) (get-it p) - (error 'get-line "not a textual port" p)) - (error 'get-line "not an input port" p))) + (die 'get-line "not a textual port" p)) + (die 'get-line "not an input port" p))) (define (get-string-all p) @@ -1579,8 +1580,8 @@ (if (input-port? p) (if (textual-port? p) (get-it p) - (error 'get-string-all "not a textual port" p)) - (error 'get-string-all "not an input port" p))) + (die 'get-string-all "not a textual port" p)) + (die 'get-string-all "not an input port" p))) @@ -1598,7 +1599,7 @@ (bytevector-u8-set! ($port-buffer p) i b) ($set-port-index! p (fx+ i 1))] [else - (error who "insufficient space on port" p)]))] + (die who "insufficient space on port" p)]))] [(fx<= b #x7FF) (let ([i ($port-index p)] [j ($port-size p)] @@ -1657,14 +1658,14 @@ (bytevector-u8-set! ($port-buffer p) i b) ($set-port-index! p (fx+ i 1))] [else - (error who "insufficient space in port" p)]))] + (die who "insufficient space in port" p)]))] [else (case (transcoder-error-handling-mode (port-transcoder p)) [(ignore) (void)] [(replace) (put-char p #\?)] [(raise) (raise (make-i/o-encoding-error p))] - [else (error who "BUG: invalid error handling mode" p)])])) + [else (die who "BUG: invalid die handling mode" p)])])) (define (put-char-char-mode p c who) (flush-output-port p) (let ([i ($port-index p)] [j ($port-size p)]) @@ -1673,7 +1674,7 @@ (string-set! ($port-buffer p) i c) ($set-port-index! p (fx+ i 1))] [else - (error who "insufficient space in port" p)]))) + (die who "insufficient space in port" p)]))) ;;; (define write-char (case-lambda @@ -1682,17 +1683,17 @@ (define (put-char p c) (do-put-char p c 'put-char)) (define (put-string p str) - (unless (string? str) (error 'put-string "not a string" str)) + (unless (string? str) (die 'put-string "not a string" str)) (unless (output-port? p) - (error 'put-string "not an output port" p)) + (die 'put-string "not an output port" p)) (unless (textual-port? p) - (error 'put-string "not a textual port" p)) + (die 'put-string "not a textual port" p)) (let f ([i 0] [n (string-length str)]) (unless (fx= i n) (do-put-char p (string-ref str i) 'put-string) (f (fx+ i 1) n)))) (define (do-put-char p c who) - (unless (char? c) (error who "not a char" c)) + (unless (char? c) (die who "not a char" c)) (let ([m ($port-fast-attrs p)]) (cond [(eq? m fast-put-utf8-tag) @@ -1723,8 +1724,8 @@ (put-char-latin-mode p b who)])))] [else (if (output-port? p) - (error who "not a textual port" p) - (error who "not an output port" p))])))) + (die who "not a textual port" p) + (die who "not an output port" p))])))) (define newline (case-lambda @@ -1733,11 +1734,11 @@ (flush-output-port (*the-output-port*))] [(p) (unless (output-port? p) - (error 'newline "not an output port" p)) + (die 'newline "not an output port" p)) (unless (textual-port? p) - (error 'newline "not a textual port" p)) + (die 'newline "not a textual port" p)) (when ($port-closed? p) - (error 'newline "port is closed" p)) + (die 'newline "port is closed" p)) (put-char p #\newline) (flush-output-port p)])) @@ -1753,13 +1754,13 @@ (when (or (not (fixnum? bytes)) (fx< bytes 0) (fx> bytes i)) - (error who "write! returned an invalid value" bytes)) + (die who "write! returned an invalid value" bytes)) (cond [(fx= bytes i) (bytevector-u8-set! buf 0 b) ($set-port-index! p 1)] [(fx= bytes 0) - (error who "could not write bytes to sink")] + (die who "could not write bytes to sink")] [else (let ([i (fx- i bytes)]) (bytevector-copy! buf bytes buf 0 i) @@ -1768,7 +1769,7 @@ ;;; (define (put-u8 p b) (define who 'put-u8) - (unless (u8? b) (error who "not a u8" b)) + (unless (u8? b) (die who "not a u8" b)) (let ([m ($port-fast-attrs p)]) (cond [(eq? m fast-put-byte-tag) @@ -1781,8 +1782,8 @@ (put-u8-byte-mode p b who)]))] [else (if (output-port? p) - (error who "not a binary port" p) - (error who "not an output port" p))])))) + (die who "not a binary port" p) + (die who "not an output port" p))])))) ) diff --git a/scheme/ikarus.lists.ss b/scheme/ikarus.lists.ss index 8599760..32445de 100644 --- a/scheme/ikarus.lists.ss +++ b/scheme/ikarus.lists.ss @@ -70,11 +70,11 @@ [(n) (if (and (fixnum? n) ($fx>= n 0)) (f n (void) '()) - (error 'make-list "not a valid length" n))] + (die 'make-list "not a valid length" n))] [(n fill) (if (and (fixnum? n) ($fx>= n 0)) (f n fill '()) - (error 'make-list "not a valid length" n))]))) + (die 'make-list "not a valid length" n))]))) (define length @@ -85,13 +85,13 @@ (if (pair? h) (if (not (eq? h t)) (race ($cdr h) ($cdr t) ls ($fx+ n 2)) - (error 'length "circular list" ls)) + (die 'length "circular list" ls)) (if (null? h) ($fx+ n 1) - (error 'length "not a proper list" ls)))) + (die 'length "not a proper list" ls)))) (if (null? h) n - (error 'length "not a proper list" ls))))]) + (die 'length "not a proper list" ls))))]) (lambda (ls) (race ls ls ls 0)))) @@ -103,14 +103,14 @@ [($fxzero? i) (if (pair? ls) ($car ls) - (error 'list-ref "index is out of range" index list))] + (die 'list-ref "index is out of range" index list))] [(pair? ls) (f ($cdr ls) ($fxsub1 i))] [(null? ls) - (error 'list-rec "index is out of range" index list)] - [else (error 'list-ref "not a list" list)]))) + (die 'list-rec "index is out of range" index list)] + [else (die 'list-ref "not a list" list)]))) (unless (and (fixnum? index) ($fx>= index 0)) - (error 'list-ref "not a valid index" index)) + (die 'list-ref "not a valid index" index)) (f list index))) @@ -123,10 +123,10 @@ [(pair? ls) (f ($cdr ls) ($fxsub1 i))] [(null? ls) - (error 'list-tail "index is out of range" index list)] - [else (error 'list-tail "not a list" list)]))) + (die 'list-tail "index is out of range" index list)] + [else (die 'list-tail "not a list" list)]))) (unless (and (fixnum? index) ($fx>= index 0)) - (error 'list-tail "not a valid index" index)) + (die 'list-tail "not a valid index" index)) (f list index))) (module (append) @@ -138,13 +138,13 @@ (if (not (eq? h t)) (let ([a2 ($car h)]) (reverse ($cdr h) ($cdr t) ls (cons a2 (cons a1 ac)))) - (error 'append "circular list" ls)) + (die 'append "circular list" ls)) (if (null? h) (cons a1 ac) - (error 'append "not a proper list" ls)))) + (die 'append "not a proper list" ls)))) (if (null? h) ac - (error 'append "not a proper list" ls))))) + (die 'append "not a proper list" ls))))) (define revcons (lambda (ls ac) (cond @@ -173,13 +173,13 @@ (if (pair? h) (if (not (eq? h t)) (race ($cdr h) ($cdr t) ls (cons ($car h) ac)) - (error 'reverse "circular list" ls)) + (die 'reverse "circular list" ls)) (if (null? h) ac - (error 'reverse "not a proper list" ls)))) + (die 'reverse "not a proper list" ls)))) (if (null? h) ac - (error 'reverse "not a proper list" ls))))]) + (die 'reverse "not a proper list" ls))))]) (lambda (x) (race x x x '())))) @@ -191,14 +191,14 @@ (if (pair? h) (if (not (eq? h t)) (race ($cdr h) ($cdr t) ls h) - (error 'last-pair "circular list" ls)) + (die 'last-pair "circular list" ls)) last)) last))]) (lambda (x) (if (pair? x) (let ([d (cdr x)]) (race d d x x)) - (error 'last-pair "not a pair" x))))) + (die 'last-pair "not a pair" x))))) (define memq (letrec ([race @@ -212,13 +212,13 @@ h (if (not (eq? h t)) (race ($cdr h) ($cdr t) ls x) - (error 'memq "circular list" ls))) + (die 'memq "circular list" ls))) (if (null? h) '#f - (error 'memq "not a proper list" ls))))) + (die 'memq "not a proper list" ls))))) (if (null? h) '#f - (error 'memq "not a proper list" ls))))]) + (die 'memq "not a proper list" ls))))]) (lambda (x ls) (race ls ls ls x)))) @@ -234,13 +234,13 @@ h (if (not (eq? h t)) (race ($cdr h) ($cdr t) ls x) - (error 'memv "circular list" ls))) + (die 'memv "circular list" ls))) (if (null? h) '#f - (error 'memv "not a proper list" ls))))) + (die 'memv "not a proper list" ls))))) (if (null? h) '#f - (error 'memv "not a proper list" ls))))]) + (die 'memv "not a proper list" ls))))]) (lambda (x ls) (race ls ls ls x)))) @@ -256,13 +256,13 @@ h (if (not (eq? h t)) (race ($cdr h) ($cdr t) ls x) - (error 'member "circular list" ls))) + (die 'member "circular list" ls))) (if (null? h) '#f - (error 'member "not a proper list" ls))))) + (die 'member "not a proper list" ls))))) (if (null? h) '#f - (error 'member "not a proper list" ls))))]) + (die 'member "not a proper list" ls))))]) (lambda (x ls) (race ls ls ls x)))) @@ -279,16 +279,16 @@ h (if (not (eq? h t)) (race ($cdr h) ($cdr t) ls p) - (error 'memp "circular list" ls))) + (die 'memp "circular list" ls))) (if (null? h) '#f - (error 'memp "not a proper list" ls))))) + (die 'memp "not a proper list" ls))))) (if (null? h) '#f - (error 'memp "not a proper list" ls))))]) + (die 'memp "not a proper list" ls))))]) (lambda (p ls) (unless (procedure? p) - (error 'memp "not a procedure" p)) + (die 'memp "not a procedure" p)) (race ls ls ls p)))) (define find @@ -305,16 +305,16 @@ a (if (not (eq? h t)) (race ($cdr h) ($cdr t) ls p) - (error 'find "circular list" ls)))) + (die 'find "circular list" ls)))) (if (null? h) '#f - (error 'find "not a proper list" ls)))))) + (die 'find "not a proper list" ls)))))) (if (null? h) '#f - (error 'find "not a proper list" ls))))]) + (die 'find "not a proper list" ls))))]) (lambda (p ls) (unless (procedure? p) - (error 'find "not a procedure" p)) + (die 'find "not a procedure" p)) (race ls ls ls p)))) (define assq @@ -332,16 +332,16 @@ (if (eq? ($car a) x) a (race x ($cdr h) ($cdr t) ls)) - (error 'assq "malformed alist" + (die 'assq "malformed alist" ls))) - (error 'assq "circular list" ls)) + (die 'assq "circular list" ls)) (if (null? h) #f - (error 'assq "not a proper list" ls)))) - (error 'assq "malformed alist" ls))) + (die 'assq "not a proper list" ls)))) + (die 'assq "malformed alist" ls))) (if (null? h) #f - (error 'assq "not a proper list" ls))))]) + (die 'assq "not a proper list" ls))))]) (lambda (x ls) (race x ls ls ls)))) @@ -361,19 +361,19 @@ (if (p ($car a)) a (race p ($cdr h) ($cdr t) ls)) - (error 'assp "malformed alist" + (die 'assp "malformed alist" ls))) - (error 'assp "circular list" ls)) + (die 'assp "circular list" ls)) (if (null? h) #f - (error 'assp "not a proper list" ls)))) - (error 'assp "malformed alist" ls))) + (die 'assp "not a proper list" ls)))) + (die 'assp "malformed alist" ls))) (if (null? h) #f - (error 'assp "not a proper list" ls))))]) + (die 'assp "not a proper list" ls))))]) (lambda (p ls) (unless (procedure? p) - (error 'assp "not a procedure" p)) + (die 'assp "not a procedure" p)) (race p ls ls ls)))) (define assv @@ -391,16 +391,16 @@ (if (eqv? ($car a) x) a (race x ($cdr h) ($cdr t) ls)) - (error 'assv "malformed alist" + (die 'assv "malformed alist" ls))) - (error 'assv "circular list" ls)) + (die 'assv "circular list" ls)) (if (null? h) #f - (error 'assv "not a proper list" ls)))) - (error 'assv "malformed alist" ls))) + (die 'assv "not a proper list" ls)))) + (die 'assv "malformed alist" ls))) (if (null? h) #f - (error 'assv "not a proper list" ls))))]) + (die 'assv "not a proper list" ls))))]) (lambda (x ls) (race x ls ls ls)))) @@ -419,16 +419,16 @@ (if (equal? ($car a) x) a (race x ($cdr h) ($cdr t) ls)) - (error 'assoc "malformed alist" + (die 'assoc "malformed alist" ls))) - (error 'assoc "circular list" ls)) + (die 'assoc "circular list" ls)) (if (null? h) #f - (error 'assoc "not a proper list" ls)))) - (error 'assoc "malformed alist" ls))) + (die 'assoc "not a proper list" ls)))) + (die 'assoc "malformed alist" ls))) (if (null? h) #f - (error 'assoc "not a proper list" ls))))]) + (die 'assoc "not a proper list" ls))))]) (lambda (x ls) (race x ls ls ls)))) @@ -448,23 +448,23 @@ (if (cmp ($car h) x) (race ($cdr h) ($cdr t) ls x) (cons ($car h) (race ($cdr h) ($cdr t) ls x))) - (error 'name "circular list" ls)) + (die 'name "circular list" ls)) (if (null? h) '() - (error 'name "not a proper list" ls)))) + (die 'name "not a proper list" ls)))) (let ([a0 ($car h)] [h ($cdr h)]) (if (pair? h) (if (not (eq? h t)) (if (cmp ($car h) x) (cons a0 (race ($cdr h) ($cdr t) ls x)) (cons* a0 ($car h) (race ($cdr h) ($cdr t) ls x))) - (error 'name "circular list" ls)) + (die 'name "circular list" ls)) (if (null? h) (list a0) - (error 'name "not a proper list" ls))))) + (die 'name "not a proper list" ls))))) (if (null? h) '() - (error 'name "not a proper list" ls))))]) + (die 'name "not a proper list" ls))))]) (lambda (x ls) (check x ls) (race ls ls ls x))))])) @@ -474,11 +474,11 @@ (define-remover remp (lambda (elt p) (p elt)) (lambda (x ls) (unless (procedure? x) - (error 'remp "not a procedure" x)))) + (die 'remp "not a procedure" x)))) (define-remover filter (lambda (elt p) (not (p elt))) (lambda (x ls) (unless (procedure? x) - (error 'filter "not a procedure" x))))) + (die 'filter "not a procedure" x))))) (module (map) @@ -489,27 +489,27 @@ (let ([h ($cdr h)]) (if (pair? h) (if (eq? h t) - (error who "circular list") + (die who "circular list") (len ($cdr h) ($cdr t) ($fx+ n 2))) (if (null? h) ($fxadd1 n) - (error who "improper list")))) + (die who "improper list")))) (if (null? h) n - (error who "improper list"))))) + (die who "improper list"))))) (define map1 (lambda (f a d n) (cond [(pair? d) (if ($fxzero? n) - (error who "list was altered!") + (die who "list was altered!") (cons (f a) (map1 f ($car d) ($cdr d) ($fxsub1 n))))] [(null? d) (if ($fxzero? n) (cons (f a) '()) - (error who "list was altered"))] - [else (error who "list was altered")]))) + (die who "list was altered"))] + [else (die who "list was altered")]))) (define map2 (lambda (f a1 a2 d1 d2 n) (cond @@ -517,21 +517,21 @@ (cond [(pair? d2) (if ($fxzero? n) - (error who "list was altered") + (die who "list was altered") (cons (f a1 a2) (map2 f ($car d1) ($car d2) ($cdr d1) ($cdr d2) ($fxsub1 n))))] - [else (error who "length mismatch")])] + [else (die who "length mismatch")])] [(null? d1) (cond [(null? d2) (if ($fxzero? n) (cons (f a1 a2) '()) - (error who "list was altered"))] - [else (error who "length mismatch")])] - [else (error who "list was altered")]))) + (die who "list was altered"))] + [else (die who "length mismatch")])] + [else (die who "list was altered")]))) (define cars (lambda (ls*) (cond @@ -542,7 +542,7 @@ [(pair? a) (cons (car a) (cars (cdr ls*)))] [else - (error 'map "length mismatch")]))]))) + (die 'map "length mismatch")]))]))) (define cdrs (lambda (ls*) (cond @@ -553,7 +553,7 @@ [(pair? a) (cons (cdr a) (cdrs (cdr ls*)))] [else - (error 'map "length mismatch")]))]))) + (die 'map "length mismatch")]))]))) (define mapm (lambda (f ls ls* n) (cond @@ -561,10 +561,10 @@ (if (andmap null? ls*) (if (fxzero? n) '() - (error 'map "lists were mutated during operation")) - (error 'map "length mismatch"))] + (die 'map "lists were mutated during operation")) + (die 'map "length mismatch"))] [(fxzero? n) - (error 'map "lists were mutated during operation")] + (die 'map "lists were mutated during operation")] [else (cons (apply f (car ls) (cars ls*)) @@ -573,30 +573,30 @@ (case-lambda [(f ls) (unless (procedure? f) - (error who "not a procedure" f)) + (die who "not a procedure" f)) (cond [(pair? ls) (let ([d ($cdr ls)]) (map1 f ($car ls) d (len d d 0)))] [(null? ls) '()] - [else (error who "improper list")])] + [else (die who "improper list")])] [(f ls ls2) (unless (procedure? f) - (error who "not a procedure" f)) + (die who "not a procedure" f)) (cond [(pair? ls) (if (pair? ls2) (let ([d ($cdr ls)]) (map2 f ($car ls) ($car ls2) d ($cdr ls2) (len d d 0))) - (error who "length mismatch"))] + (die who "length mismatch"))] [(null? ls) (if (null? ls2) '() - (error who "length mismatch"))] - [else (error who "not a list")])] + (die who "length mismatch"))] + [else (die who "not a list")])] [(f ls . ls*) (unless (procedure? f) - (error who "not a procedure" f)) + (die who "not a procedure" f)) (cond [(pair? ls) (let ([n (len ls ls 0)]) @@ -604,7 +604,7 @@ [(null? ls) (if (andmap null? ls*) '() - (error who "length mismatch"))])]))) + (die who "length mismatch"))])]))) (module (for-each) (define who 'for-each) @@ -614,28 +614,28 @@ (let ([h ($cdr h)]) (if (pair? h) (if (eq? h t) - (error who "circular list") + (die who "circular list") (len ($cdr h) ($cdr t) ($fx+ n 2))) (if (null? h) ($fxadd1 n) - (error who "improper list")))) + (die who "improper list")))) (if (null? h) n - (error who "improper list"))))) + (die who "improper list"))))) (define for-each1 (lambda (f a d n) (cond [(pair? d) (if ($fxzero? n) - (error who "list was altered!") + (die who "list was altered!") (begin (f a) (for-each1 f ($car d) ($cdr d) ($fxsub1 n))))] [(null? d) (if ($fxzero? n) (f a) - (error who "list was altered"))] - [else (error who "list was altered")]))) + (die who "list was altered"))] + [else (die who "list was altered")]))) (define for-each2 (lambda (f a1 a2 d1 d2 n) (cond @@ -643,67 +643,67 @@ (cond [(pair? d2) (if ($fxzero? n) - (error who "list was altered") + (die who "list was altered") (begin (f a1 a2) (for-each2 f ($car d1) ($car d2) ($cdr d1) ($cdr d2) ($fxsub1 n))))] - [else (error who "length mismatch")])] + [else (die who "length mismatch")])] [(null? d1) (cond [(null? d2) (if ($fxzero? n) (f a1 a2) - (error who "list was altered"))] - [else (error who "length mismatch")])] - [else (error who "list was altered")]))) + (die who "list was altered"))] + [else (die who "length mismatch")])] + [else (die who "list was altered")]))) (define for-each (case-lambda [(f ls) (unless (procedure? f) - (error who "not a procedure" f)) + (die who "not a procedure" f)) (cond [(pair? ls) (let ([d ($cdr ls)]) (for-each1 f ($car ls) d (len d d 0)))] [(null? ls) (void)] - [else (error who "improper list")])] + [else (die who "improper list")])] [(f ls ls2) (unless (procedure? f) - (error who "not a procedure" f)) + (die who "not a procedure" f)) (cond [(pair? ls) (if (pair? ls2) (let ([d ($cdr ls)]) (for-each2 f ($car ls) ($car ls2) d ($cdr ls2) (len d d 0))) - (error who "length mismatch"))] + (die who "length mismatch"))] [(null? ls) (if (null? ls2) (void) - (error who "length mismatch"))] - [else (error who "not a list")])] + (die who "length mismatch"))] + [else (die who "not a list")])] [(f ls . ls*) (unless (procedure? f) - (error 'for-each "not a procedure" f)) + (die 'for-each "not a procedure" f)) (unless (list? ls) - (error 'for-each "not a list" ls)) + (die 'for-each "not a list" ls)) (let ([n (length ls)]) (for-each (lambda (x) (unless (and (list? x) (= (length x) n)) - (error 'for-each "not a list" x))) + (die 'for-each "not a list" x))) ls*) (let loop ([n (length ls)] [ls ls] [ls* ls*]) (cond [($fx= n 0) (unless (and (null? ls) (andmap null? ls*)) - (error 'for-each "list modified" f))] + (die 'for-each "list modified" f))] [else (unless (and (pair? ls) (andmap pair? ls*)) - (error 'for-each "list modified" f)) + (die 'for-each "list modified" f)) (apply f (car ls) (map car ls*)) (loop (fx- n 1) (cdr ls) (map cdr ls*))])))]))) @@ -715,27 +715,27 @@ (let ([h ($cdr h)]) (if (pair? h) (if (eq? h t) - (error who "circular list") + (die who "circular list") (len ($cdr h) ($cdr t) ($fx+ n 2))) (if (null? h) ($fxadd1 n) - (error who "improper list")))) + (die who "improper list")))) (if (null? h) n - (error who "improper list"))))) + (die who "improper list"))))) (define andmap1 (lambda (f a d n) (cond [(pair? d) (if ($fxzero? n) - (error who "list was altered!") + (die who "list was altered!") (and (f a) (andmap1 f ($car d) ($cdr d) ($fxsub1 n))))] [(null? d) (if ($fxzero? n) (f a) - (error who "list was altered"))] - [else (error who "list was altered")]))) + (die who "list was altered"))] + [else (die who "list was altered")]))) (define andmap2 (lambda (f a1 a2 d1 d2 n) (cond @@ -743,52 +743,52 @@ (cond [(pair? d2) (if ($fxzero? n) - (error who "list was altered") + (die who "list was altered") (and (f a1 a2) (andmap2 f ($car d1) ($car d2) ($cdr d1) ($cdr d2) ($fxsub1 n))))] - [else (error who "length mismatch")])] + [else (die who "length mismatch")])] [(null? d1) (cond [(null? d2) (if ($fxzero? n) (f a1 a2) - (error who "list was altered"))] - [else (error who "length mismatch")])] - [else (error who "list was altered")]))) + (die who "list was altered"))] + [else (die who "length mismatch")])] + [else (die who "list was altered")]))) (define andmap (case-lambda [(f ls) (unless (procedure? f) - (error who "not a procedure" f)) + (die who "not a procedure" f)) (cond [(pair? ls) (let ([d ($cdr ls)]) (andmap1 f ($car ls) d (len d d 0)))] [(null? ls) #t] - [else (error who "improper list")])] + [else (die who "improper list")])] [(f ls ls2) (unless (procedure? f) - (error who "not a procedure" f)) + (die who "not a procedure" f)) (cond [(pair? ls) (if (pair? ls2) (let ([d ($cdr ls)]) (andmap2 f ($car ls) ($car ls2) d ($cdr ls2) (len d d 0))) - (error who "length mismatch"))] + (die who "length mismatch"))] [(null? ls) (if (null? ls2) #t - (error who "length mismatch"))] - [else (error who "not a list")])] + (die who "length mismatch"))] + [else (die who "not a list")])] [(f ls . ls*) (unless (procedure? f) - (error who "not a procedure" f)) - (error who "vararg not yet supported")]))) + (die who "not a procedure" f)) + (die who "vararg not yet supported")]))) @@ -801,39 +801,39 @@ (let ([h ($cdr h)]) (if (pair? h) (if (eq? h t) - (error who "circular list") + (die who "circular list") (len ($cdr h) ($cdr t) ($fx+ n 2))) (if (null? h) ($fxadd1 n) - (error who "improper list")))) + (die who "improper list")))) (if (null? h) n - (error who "improper list"))))) + (die who "improper list"))))) (define ormap1 (lambda (f a d n) (cond [(pair? d) (if ($fxzero? n) - (error who "list was altered!") + (die who "list was altered!") (or (f a) (ormap1 f ($car d) ($cdr d) ($fxsub1 n))))] [(null? d) (if ($fxzero? n) (f a) - (error who "list was altered"))] - [else (error who "list was altered")]))) + (die who "list was altered"))] + [else (die who "list was altered")]))) (define ormap (case-lambda [(f ls) (unless (procedure? f) - (error who "not a procedure" f)) + (die who "not a procedure" f)) (cond [(pair? ls) (let ([d ($cdr ls)]) (ormap1 f ($car ls) d (len d d 0)))] [(null? ls) #f] - [else (error who "improper list")])] - [_ (error who "vararg not supported yet")]))) + [else (die who "improper list")])] + [_ (die who "vararg not supported yet")]))) @@ -844,7 +844,7 @@ (let ([a0 ($car h)] [h ($cdr h)]) (if (pair? h) (if (eq? h t) - (error 'partition "circular list" ls) + (die 'partition "circular list" ls) (let ([a1 ($car h)]) (let-values ([(a* b*) (race ($cdr h) ($cdr t) ls p)]) (if (p a0) @@ -858,13 +858,13 @@ (if (p a0) (values (list a0) '()) (values '() (list a0))) - (error 'parititon "not a proper list" ls)))) + (die 'parititon "not a proper list" ls)))) (if (null? h) (values '() '()) - (error 'parition "not a proper list" ls))))]) + (die 'parition "not a proper list" ls))))]) (lambda (p ls) (unless (procedure? p) - (error 'partition "not a procedure" p)) + (die 'partition "not a procedure" p)) (race ls ls ls p)))) @@ -878,10 +878,10 @@ (or (null? ls) (and (null? (car ls)) (null*? (cdr ls))))) (define (err* ls*) (if (null? ls*) - (error who "length mismatch") + (die who "length mismatch") (if (list? (car ls*)) (err* (cdr ls*)) - (error who "not a proper list" (car ls*))))) + (die who "not a proper list" (car ls*))))) (define (cars+cdrs ls ls*) (cond [(null? ls) (values '() '())] @@ -891,23 +891,23 @@ (let-values ([(cars cdrs) (cars+cdrs (cdr ls) (cdr ls*))]) (values (cons (car a) cars) (cons (cdr a) cdrs))) (if (list? (car ls*)) - (error who "length mismatch") - (error who "not a proper list" (car ls*)))))])) + (die who "length mismatch") + (die who "not a proper list" (car ls*)))))])) (define (loop1 f a h t ls) (if (pair? h) (let ([b (car h)] [h (cdr h)]) (combine (f a) (if (pair? h) (if (eq? h t) - (error who "circular" ls) + (die who "circular" ls) (let ([c (car h)] [h (cdr h)]) (combine (f b) (loop1 f c h (cdr t) ls)))) (if (null? h) (f b) - (combine (f b) (error who "not a proper list" ls)))))) + (combine (f b) (die who "not a proper list" ls)))))) (if (null? h) (f a) - (combine (f a) (error who "not a proper list" ls))))) + (combine (f a) (die who "not a proper list" ls))))) (define (loopn f a a* h h* t ls ls*) (if (pair? h) (let-values ([(b* h*) (cars+cdrs h* ls*)]) @@ -915,7 +915,7 @@ (combine (apply f a a*) (if (pair? h) (if (eq? h t) - (error who "circular" ls) + (die who "circular" ls) (let-values ([(c* h*) (cars+cdrs h* ls*)]) (let ([c (car h)] [h (cdr h)]) (combine (apply f b b*) @@ -930,15 +930,15 @@ (case-lambda [(f ls) (unless (procedure? f) - (error who "not a procedure" f)) + (die who "not a procedure" f)) (if (pair? ls) (loop1 f (car ls) (cdr ls) (cdr ls) ls) (if (null? ls) (combine) - (error who "not a list" ls)))] + (die who "not a list" ls)))] [(f ls . ls*) (unless (procedure? f) - (error who "not a procedure" f)) + (die who "not a procedure" f)) (if (pair? ls) (let-values ([(cars cdrs) (cars+cdrs ls* ls*)]) (loopn f (car ls) cars (cdr ls) cdrs (cdr ls) ls ls*)) @@ -955,10 +955,10 @@ (or (null? ls) (and (null? (car ls)) (null*? (cdr ls))))) (define (err* ls*) (if (null? ls*) - (error who "length mismatch") + (die who "length mismatch") (if (list? (car ls*)) (err* (cdr ls*)) - (error who "not a proper list" (car ls*))))) + (die who "not a proper list" (car ls*))))) (define (cars+cdrs ls ls*) (cond [(null? ls) (values '() '())] @@ -968,29 +968,29 @@ (let-values ([(cars cdrs) (cars+cdrs (cdr ls) (cdr ls*))]) (values (cons (car a) cars) (cons (cdr a) cdrs))) (if (list? (car ls*)) - (error who "length mismatch") - (error who "not a proper list" (car ls*)))))])) + (die who "length mismatch") + (die who "not a proper list" (car ls*)))))])) (define (loop1 f nil h t ls) (if (pair? h) (let ([a (car h)] [h (cdr h)]) (if (pair? h) (if (eq? h t) - (error who "circular" ls) + (die who "circular" ls) (let ([b (car h)] [h (cdr h)] [t (cdr t)]) (loop1 f (f (f nil a) b) h t ls))) (if (null? h) (f nil a) - (error who "not a proper list" ls)))) + (die who "not a proper list" ls)))) (if (null? h) nil - (error who "not a proper list" ls)))) + (die who "not a proper list" ls)))) (define (loopn f nil h h* t ls ls*) (if (pair? h) (let-values ([(a* h*) (cars+cdrs h* ls*)]) (let ([a (car h)] [h (cdr h)]) (if (pair? h) (if (eq? h t) - (error who "circular" ls) + (die who "circular" ls) (let-values ([(b* h*) (cars+cdrs h* ls*)]) (let ([b (car h)] [h (cdr h)] [t (cdr t)]) (loopn f @@ -1006,11 +1006,11 @@ (case-lambda [(f nil ls) (unless (procedure? f) - (error who "not a procedure" f)) + (die who "not a procedure" f)) (loop1 f nil ls ls ls)] [(f nil ls . ls*) (unless (procedure? f) - (error who "not a procedure" f)) + (die who "not a procedure" f)) (loopn f nil ls ls* ls ls ls*)]))) (module (fold-right) @@ -1019,10 +1019,10 @@ (or (null? ls) (and (null? (car ls)) (null*? (cdr ls))))) (define (err* ls*) (if (null? ls*) - (error who "length mismatch") + (die who "length mismatch") (if (list? (car ls*)) (err* (cdr ls*)) - (error who "not a proper list" (car ls*))))) + (die who "not a proper list" (car ls*))))) (define (cars+cdrs ls ls*) (cond [(null? ls) (values '() '())] @@ -1032,29 +1032,29 @@ (let-values ([(cars cdrs) (cars+cdrs (cdr ls) (cdr ls*))]) (values (cons (car a) cars) (cons (cdr a) cdrs))) (if (list? (car ls*)) - (error who "length mismatch") - (error who "not a proper list" (car ls*)))))])) + (die who "length mismatch") + (die who "not a proper list" (car ls*)))))])) (define (loop1 f nil h t ls) (if (pair? h) (let ([a (car h)] [h (cdr h)]) (if (pair? h) (if (eq? h t) - (error who "circular" ls) + (die who "circular" ls) (let ([b (car h)] [h (cdr h)] [t (cdr t)]) (f a (f b (loop1 f nil h t ls))))) (if (null? h) (f a nil) - (error who "not a proper list" ls)))) + (die who "not a proper list" ls)))) (if (null? h) nil - (error who "not a proper list" ls)))) + (die who "not a proper list" ls)))) (define (loopn f nil h h* t ls ls*) (if (pair? h) (let-values ([(a* h*) (cars+cdrs h* ls*)]) (let ([a (car h)] [h (cdr h)]) (if (pair? h) (if (eq? h t) - (error who "circular" ls) + (die who "circular" ls) (let-values ([(b* h*) (cars+cdrs h* ls*)]) (let ([b (car h)] [h (cdr h)] [t (cdr t)]) (apply f a @@ -1073,11 +1073,11 @@ (case-lambda [(f nil ls) (unless (procedure? f) - (error who "not a procedure" f)) + (die who "not a procedure" f)) (loop1 f nil ls ls ls)] [(f nil ls . ls*) (unless (procedure? f) - (error who "not a procedure" f)) + (die who "not a procedure" f)) (loopn f nil ls ls* ls ls ls*)] ))) diff --git a/scheme/ikarus.load.ss b/scheme/ikarus.load.ss index 1c74876..3d24e36 100644 --- a/scheme/ikarus.load.ss +++ b/scheme/ikarus.load.ss @@ -35,9 +35,9 @@ [(x) (load x load-handler)] [(x eval-proc) (unless (string? x) - (error 'load "not a string" x)) + (die 'load "not a string" x)) (unless (procedure? eval-proc) - (error 'load "not a procedure" eval-proc)) + (die 'load "not a procedure" eval-proc)) (let ([p (open-input-file x)]) (let ([x (read-initial p)]) (unless (eof-object? x) diff --git a/scheme/ikarus.main.ss b/scheme/ikarus.main.ss index e1d0436..32da13a 100644 --- a/scheme/ikarus.main.ss +++ b/scheme/ikarus.main.ss @@ -77,14 +77,14 @@ (let ([d (cdr args)]) (cond [(null? d) - (error 'ikarus "--script requires a script name")] + (die 'ikarus "--script requires a script name")] [else (values '() (car d) 'script (cdr d))]))] [(string=? (car args) "--r6rs-script") (let ([d (cdr args)]) (cond [(null? d) - (error 'ikarus "--r6rs-script requires a script name")] + (die 'ikarus "--r6rs-script requires a script name")] [else (values '() (car d) 'r6rs-script (cdr d))]))] [else diff --git a/scheme/ikarus.numerics.ss b/scheme/ikarus.numerics.ss index d50c4a3..c9422f0 100644 --- a/scheme/ikarus.numerics.ss +++ b/scheme/ikarus.numerics.ss @@ -43,7 +43,7 @@ (define (flonum-bytes f) (unless (flonum? f) - (error 'flonum-bytes "not a flonum" f)) + (die 'flonum-bytes "not a flonum" f)) (values ($flonum-u8-ref f 0) ($flonum-u8-ref f 1) @@ -55,7 +55,7 @@ ($flonum-u8-ref f 7))) (define (flonum-parts x) (unless (flonum? x) - (error 'flonum-parts "not a flonum" x)) + (die 'flonum-parts "not a flonum" x)) (let-values ([(b0 b1 b2 b3 b4 b5 b6 b7) (flonum-bytes x)]) (values (zero? (fxlogand b0 128)) @@ -108,7 +108,7 @@ (define (flround x) (if (flonum? x) ($flround x) - (error 'flround "not a flonum" x))) + (die 'flround "not a flonum" x))) (module ($flonum->integer $flonum->exact) (define ($flonum-signed-mantissa x) @@ -183,7 +183,7 @@ (define (flnumerator x) (unless (flonum? x) - (error 'flnumerator "not a flonum" x)) + (die 'flnumerator "not a flonum" x)) (cond [($flonum-integer? x) x] [($flonum-rational? x) @@ -192,7 +192,7 @@ (define (fldenominator x) (unless (flonum? x) - (error 'fldenominator "not a flonum" x)) + (die 'fldenominator "not a flonum" x)) (cond [($flonum-integer? x) 1.0] [($flonum-rational? x) @@ -203,49 +203,49 @@ (define (fleven? x) ;;; FIXME: optimize (unless (flonum? x) - (error 'fleven? "not a flonum" x)) + (die 'fleven? "not a flonum" x)) (let ([v ($flonum->exact x)]) (cond [(fixnum? v) ($fx= ($fxlogand v 1) 0)] [(bignum? v) (foreign-call "ikrt_even_bn" v)] - [else (error 'fleven? "not an integer flonum" x)]))) + [else (die 'fleven? "not an integer flonum" x)]))) (define (flodd? x) (unless (flonum? x) - (error 'flodd? "not a flonum" x)) + (die 'flodd? "not a flonum" x)) ;;; FIXME: optimize (let ([v ($flonum->exact x)]) (cond [(fixnum? v) ($fx= ($fxlogand v 1) 1)] [(bignum? v) (not (foreign-call "ikrt_even_bn" v))] - [else (error 'flodd? "not an integer flonum" x)]))) + [else (die 'flodd? "not an integer flonum" x)]))) (define (flinteger? x) (if (flonum? x) ($flonum-integer? x) - (error 'flinteger? "not a flonum" x))) + (die 'flinteger? "not a flonum" x))) (define (flinfinite? x) (if (flonum? x) (let ([be (fxlogand ($flonum-sbe x) (sub1 (fxsll 1 11)))]) (and (fx= be 2047) ;;; nans and infs ($zero-m? x))) - (error 'flinfinite? "not a flonum" x))) + (die 'flinfinite? "not a flonum" x))) (define (flnan? x) (if (flonum? x) (let ([be (fxlogand ($flonum-sbe x) (sub1 (fxsll 1 11)))]) (and (fx= be 2047) ;;; nans and infs (not ($zero-m? x)))) - (error 'flnan? "not a flonum" x))) + (die 'flnan? "not a flonum" x))) (define (flfinite? x) (if (flonum? x) (let ([be (fxlogand ($flonum-sbe x) (sub1 (fxsll 1 11)))]) (not (fx= be 2047))) - (error 'flfinite? "not a flonum" x))) + (die 'flfinite? "not a flonum" x))) (define ($flzero? x) (let ([be (fxlogand ($flonum-sbe x) (sub1 (fxsll 1 11)))]) @@ -271,67 +271,67 @@ (cond [(flonum? x) (or ($flonum->exact x) - (error 'inexact->exact "no real value" x))] + (die 'inexact->exact "no real value" x))] [(or (fixnum? x) (ratnum? x) (bignum? x)) x] [else - (error 'inexact->exact "not an inexact number" x)])) + (die 'inexact->exact "not an inexact number" x)])) (define (exact x) (cond [(flonum? x) (or ($flonum->exact x) - (error 'exact "no real value" x))] + (die 'exact "no real value" x))] [(or (fixnum? x) (ratnum? x) (bignum? x)) x] [else - (error 'exact "not an inexact number" x)])) + (die 'exact "not an inexact number" x)])) (define (flpositive? x) (if (flonum? x) ($fl> x 0.0) - (error 'flpositive? "not a flonum" x))) + (die 'flpositive? "not a flonum" x))) (define (flabs x) (if (flonum? x) (if ($fx> ($flonum-u8-ref x 0) 127) ($fl* x -1.0) x) - (error 'flabs "not a flonum" x))) + (die 'flabs "not a flonum" x))) (define (fixnum->flonum x) (if (fixnum? x) ($fixnum->flonum x) - (error 'fixnum->flonum "not a fixnum"))) + (die 'fixnum->flonum "not a fixnum"))) (define (flsin x) (if (flonum? x) (foreign-call "ikrt_fl_sin" x) - (error 'flsin "not a flonum" x))) + (die 'flsin "not a flonum" x))) (define (flcos x) (if (flonum? x) (foreign-call "ikrt_fl_cos" x) - (error 'flcos "not a flonum" x))) + (die 'flcos "not a flonum" x))) (define (fltan x) (if (flonum? x) (foreign-call "ikrt_fl_tan" x) - (error 'fltan "not a flonum" x))) + (die 'fltan "not a flonum" x))) (define (flasin x) (if (flonum? x) (foreign-call "ikrt_fl_asin" x) - (error 'flasin "not a flonum" x))) + (die 'flasin "not a flonum" x))) (define (flacos x) (if (flonum? x) (foreign-call "ikrt_fl_acos" x) - (error 'flacos "not a flonum" x))) + (die 'flacos "not a flonum" x))) (define (flatan x) (if (flonum? x) (foreign-call "ikrt_fl_atan" x) - (error 'flatan "not a flonum" x))) + (die 'flatan "not a flonum" x))) (define (flfloor x) @@ -347,7 +347,7 @@ [(ratnum? e) (exact->inexact (ratnum-floor e))] [else x]))] - [else (error 'flfloor "not a flonum" x)])) + [else (die 'flfloor "not a flonum" x)])) (define (flceiling x) (cond @@ -358,19 +358,19 @@ [(ratnum? e) (exact->inexact (ceiling e))] [else x]))] - [else (error 'flceiling "not a flonum" x)])) + [else (die 'flceiling "not a flonum" x)])) (define (flexp x) (if (flonum? x) (foreign-call "ikrt_fl_exp" x ($make-flonum)) - (error 'flexp "not a flonum" x))) + (die 'flexp "not a flonum" x))) (define (fllog x) (if (flonum? x) (if ($fl>= x 0.0) (foreign-call "ikrt_fl_log" x) - (error 'fllog "argument should not be negative" x)) - (error 'fllog "not a flonum" x))) + (die 'fllog "argument should not be negative" x)) + (die 'fllog "not a flonum" x))) (define (flexpt x y) (if (flonum? x) @@ -382,8 +382,8 @@ [(bignum? y^) (inexact (expt x y^))] [else (foreign-call "ikrt_flfl_expt" x y ($make-flonum))])) - (error 'flexpt "not a flonum" y)) - (error 'fllog "not a flonum" x))) + (die 'flexpt "not a flonum" y)) + (die 'fllog "not a flonum" x))) ) @@ -558,7 +558,7 @@ (fxlogor (fxsll b2 4) (fxsra b1 4)) (fxlogor (fxsll b1 4) (fxsra b0 4)) (fxsra b0 3))] - [else (error '$float/aux "BUG: invalid b7" b7)])) + [else (die '$float/aux "BUG: invalid b7" b7)])) (define (bignum->flonum x) (define (bignum/4->flonum x) ($flonum/aux ($bignum-positive? x) -24 @@ -582,7 +582,7 @@ (if (fx= b6 0) (if (fx= b5 0) (if (fx= b4 0) - (error 'bignum8->flonum "malformed bignum") + (die 'bignum8->flonum "malformed bignum") ($flonum/aux pos? -16 b4 b3 b2 b1 b0 0 0 0)) ($flonum/aux pos? -8 b5 b4 b3 b2 b1 b0 0 0)) ($flonum/aux pos? 0 b6 b5 b4 b3 b2 b1 b0 0)) @@ -607,14 +607,14 @@ (if (fx= bn 0) (let* ([bytes (fxsub1 bytes)] [bn ($bignum-byte-ref x bytes)]) (if (fx= bn 0) - (error 'bignum/n->flonum "malformed bignum") + (die 'bignum/n->flonum "malformed bignum") (aux x bn bytes))) (aux x bn bytes))) (aux x bn bytes))) (aux x bn bytes)))) (unless (bignum? x) - (error 'bignum->flonum "not a bignum" x)) + (die 'bignum->flonum "not a bignum" x)) (let ([bytes ($bignum-size x)]) (case bytes [(4) (bignum/4->flonum x)] @@ -666,7 +666,7 @@ (+ (* x ($ratnum-d y)) ($ratnum-n y)) ($ratnum-d y))] [else - (error '+ "not a number" y)])] + (die '+ "not a number" y)])] [(bignum? x) (cond [(fixnum? y) @@ -680,7 +680,7 @@ (+ (* x ($ratnum-d y)) ($ratnum-n y)) ($ratnum-d y))] [else - (error '+ "not a number" y)])] + (die '+ "not a number" y)])] [(flonum? x) (cond [(fixnum? y) @@ -692,7 +692,7 @@ [(ratnum? y) ($fl+ x (ratnum->flonum y))] [else - (error '+ "not a number" y)])] + (die '+ "not a number" y)])] [(ratnum? x) (cond [(or (fixnum? y) (bignum? y)) @@ -707,8 +707,8 @@ ;;; FIXME: inefficient (/ (+ (* n0 d1) (* n1 d0)) (* d0 d1)))] [else - (error '+ "not a number" y)])] - [else (error '+ "not a number" x)]))) + (die '+ "not a number" y)])] + [else (die '+ "not a number" x)]))) (define binary-bitwise-and (lambda (x y) @@ -719,7 +719,7 @@ [(bignum? y) (foreign-call "ikrt_fxbnlogand" x y)] [else - (error 'bitwise-and "not an exact integer" y)])] + (die 'bitwise-and "not an exact integer" y)])] [(bignum? x) (cond [(fixnum? y) @@ -727,8 +727,8 @@ [(bignum? y) (foreign-call "ikrt_bnbnlogand" x y)] [else - (error 'bitwise-and "not an exact integer" y)])] - [else (error 'bitwise-and "not an exact integer" x)]))) + (die 'bitwise-and "not an exact integer" y)])] + [else (die 'bitwise-and "not an exact integer" x)]))) (define binary- @@ -748,7 +748,7 @@ (let ([n ($ratnum-n y)] [d ($ratnum-d y)]) (binary/ (binary- (binary* d x) n) d))] [else - (error '- "not a number" y)])] + (die '- "not a number" y)])] [(bignum? x) (cond [(fixnum? y) @@ -761,7 +761,7 @@ (let ([n ($ratnum-n y)] [d ($ratnum-d y)]) (binary/ (binary- (binary* d x) n) d))] [else - (error '- "not a number" y)])] + (die '- "not a number" y)])] [(flonum? x) (cond [(fixnum? y) @@ -774,7 +774,7 @@ (let ([n ($ratnum-n y)] [d ($ratnum-d y)]) (binary/ (binary- (binary* d x) n) d))] [else - (error '- "not a number" y)])] + (die '- "not a number" y)])] [(ratnum? x) (let ([nx ($ratnum-n x)] [dx ($ratnum-d x)]) (cond @@ -785,8 +785,8 @@ (binary/ (binary- (binary* nx dy) (binary* ny dx)) (binary* dx dy)))] [else - (error '- "not a number" y)]))] - [else (error '- "not a number" x)]))) + (die '- "not a number" y)]))] + [else (die '- "not a number" x)]))) (define binary* (lambda (x y) @@ -802,7 +802,7 @@ [(ratnum? y) (binary/ (binary* x ($ratnum-n y)) ($ratnum-d y))] [else - (error '* "not a number" y)])] + (die '* "not a number" y)])] [(bignum? x) (cond [(fixnum? y) @@ -814,7 +814,7 @@ [(ratnum? y) (binary/ (binary* x ($ratnum-n y)) ($ratnum-d y))] [else - (error '* "not a number" y)])] + (die '* "not a number" y)])] [(flonum? x) (cond [(fixnum? y) @@ -826,13 +826,13 @@ [(ratnum? y) (binary/ (binary* x ($ratnum-n y)) ($ratnum-d y))] [else - (error '* "not a number" y)])] + (die '* "not a number" y)])] [(ratnum? x) (if (ratnum? y) (binary/ (binary* ($ratnum-n x) ($ratnum-n y)) (binary* ($ratnum-d x) ($ratnum-d y))) (binary* y x))] - [else (error '* "not a number" x)]))) + [else (die '* "not a number" x)]))) (define + (case-lambda @@ -842,7 +842,7 @@ (cond [(fixnum? a) a] [(bignum? a) a] - [else (error '+ "not a number" a)])] + [else (die '+ "not a number" a)])] [() 0] [(a b c d . e*) (let f ([ac (binary+ (binary+ (binary+ a b) c) d)] @@ -859,7 +859,7 @@ (cond [(fixnum? a) a] [(bignum? a) a] - [else (error 'bitwise-and "not a number" a)])] + [else (die 'bitwise-and "not a number" a)])] [() -1] [(a b c d . e*) (let f ([ac (binary-bitwise-and a @@ -874,7 +874,7 @@ (cond [(fixnum? x) ($fxlognot x)] [(bignum? x) (foreign-call "ikrt_bnlognot" x)] - [else (error 'bitwise-not "invalid argument" x)])) + [else (die 'bitwise-not "invalid argument" x)])) (define - (case-lambda @@ -896,7 +896,7 @@ (cond [(fixnum? a) a] [(bignum? a) a] - [else (error '* "not a number" a)])] + [else (die '* "not a number" a)])] [() 1] [(a b c d . e*) (let f ([ac (binary* (binary* (binary* a b) c) d)] @@ -926,20 +926,20 @@ [(or (fixnum? y) (bignum? y)) (binary-gcd x y)] [(number? y) - (error 'gcd "not an exact integer" y)] + (die 'gcd "not an exact integer" y)] [else - (error 'gcd "not a number" y)])] + (die 'gcd "not a number" y)])] [(number? x) - (error 'gcd "not an exact integer" x)] + (die 'gcd "not an exact integer" x)] [else - (error 'gcd "not a number" x)])] + (die 'gcd "not a number" x)])] [(x) (cond [(or (fixnum? x) (bignum? x)) x] [(number? x) - (error 'gcd "not an exact integer" x)] + (die 'gcd "not an exact integer" x)] [else - (error 'gcd "not a number" x)])] + (die 'gcd "not a number" x)])] [() 0] [(x y z . ls) (let f ([g (gcd (gcd x y) z)] [ls ls]) @@ -960,20 +960,20 @@ (let ([g (binary-gcd x y)]) (binary* y (quotient x g))))] [(number? y) - (error 'lcm "not an exact integer" y)] + (die 'lcm "not an exact integer" y)] [else - (error 'lcm "not a number" y)])] + (die 'lcm "not a number" y)])] [(number? x) - (error 'lcm "not an exact integer" x)] + (die 'lcm "not an exact integer" x)] [else - (error 'lcm "not a number" x)])] + (die 'lcm "not a number" x)])] [(x) (cond [(or (fixnum? x) (bignum? x)) x] [(number? x) - (error 'lcm "not an exact integer" x)] + (die 'lcm "not an exact integer" x)] [else - (error 'lcm "not a number" x)])] + (die 'lcm "not a number" x)])] [() 1] [(x y z . ls) (let f ([g (lcm (lcm x y) z)] [ls ls]) @@ -993,13 +993,13 @@ [(fixnum? y) ($fl/ x ($fixnum->flonum y))] [(bignum? y) ($fl/ x (bignum->flonum y))] [(ratnum? y) ($fl/ x (ratnum->flonum y))] - [else (error '/ "not a number" y)])] + [else (die '/ "not a number" y)])] [(fixnum? x) (cond [(flonum? y) ($fl/ ($fixnum->flonum x) y)] [(fixnum? y) (cond - [($fx= y 0) (error '/ "division by 0")] + [($fx= y 0) (die '/ "division by 0")] [($fx> y 0) (if ($fx= y 1) x @@ -1035,12 +1035,12 @@ (binary- 0 (quotient y g))))]))] [(ratnum? y) (/ (* x ($ratnum-d y)) ($ratnum-n y))] - [else (error '/ "not a number" y)])] + [else (die '/ "not a number" y)])] [(bignum? x) (cond [(fixnum? y) (cond - [($fx= y 0) (error '/ "division by 0")] + [($fx= y 0) (die '/ "division by 0")] [($fx> y 0) (if ($fx= y 1) x @@ -1077,7 +1077,7 @@ [(flonum? y) ($fl/ (bignum->flonum x) y)] [(ratnum? y) (binary/ (binary* x ($ratnum-n y)) ($ratnum-d y))] - [else (error '/ "not a number" y)])] + [else (die '/ "not a number" y)])] [(ratnum? x) (cond [(ratnum? y) @@ -1085,7 +1085,7 @@ (binary* ($ratnum-n x) ($ratnum-d y)) (binary* ($ratnum-n y) ($ratnum-d x)))] [else (binary/ 1 (binary/ y x))])] - [else (error '/ "not a number" x)]))) + [else (die '/ "not a number" x)]))) (define / (case-lambda @@ -1094,7 +1094,7 @@ (cond [(fixnum? x) (cond - [($fxzero? x) (error '/ "division by 0")] + [($fxzero? x) (die '/ "division by 0")] [($fx> x 0) (if ($fx= x 1) 1 @@ -1114,7 +1114,7 @@ [($fx= n 1) d] [($fx= n -1) (- d)] [else ($make-ratnum d n)]))] - [else (error '/ "not a number" x)])] + [else (die '/ "not a number" x)])] [(x y z . rest) (let f ([a (binary/ x y)] [b z] [ls rest]) (cond @@ -1130,8 +1130,8 @@ (if ($fl< x y) y x) - (error 'flmax "not a flonum" y)) - (error 'flmax "not a flonum" x))] + (die 'flmax "not a flonum" y)) + (die 'flmax "not a flonum" x))] [(x y z . rest) (let f ([a (flmax x y)] [b z] [ls rest]) (cond @@ -1141,7 +1141,7 @@ [(x) (if (flonum? x) x - (error 'flmax "not a number" x))])) + (die 'flmax "not a number" x))])) (define max (case-lambda @@ -1158,7 +1158,7 @@ (if ($fl>= y x) y x))] [(ratnum? y) ;;; FIXME: optimize (if (>= x y) x y)] - [else (error 'max "not a number" y)])] + [else (die 'max "not a number" y)])] [(bignum? x) (cond [(fixnum? y) @@ -1170,7 +1170,7 @@ (if ($fl>= y x) y x))] [(ratnum? y) ;;; FIXME: optimize (if (>= x y) x y)] - [else (error 'max "not a number" y)])] + [else (die 'max "not a number" y)])] [(flonum? x) (cond [(flonum? y) @@ -1185,7 +1185,7 @@ ;;; FIXME: may be incorrect (let ([y (ratnum->flonum y)]) (if ($fl>= y x) y x))] - [else (error 'max "not a number" y)])] + [else (die 'max "not a number" y)])] [(ratnum? x) (cond [(or (fixnum? y) (bignum? y) (ratnum? y)) @@ -1193,8 +1193,8 @@ [(flonum? y) (let ([x (ratnum->flonum x)]) (if ($fl>= x y) x y))] - [else (error 'max "not a number" y)])] - [else (error 'max "not a number" x)])] + [else (die 'max "not a number" y)])] + [else (die 'max "not a number" x)])] [(x y z . rest) (let f ([a (max x y)] [b z] [ls rest]) (cond @@ -1204,7 +1204,7 @@ [(x) (if (number? x) x - (error 'max "not a number" x))])) + (die 'max "not a number" x))])) (define min (case-lambda @@ -1221,7 +1221,7 @@ (if ($fl>= y x) x y))] [(ratnum? y) ;;; FIXME: optimize (if (>= x y) y x)] - [else (error 'min "not a number" y)])] + [else (die 'min "not a number" y)])] [(bignum? x) (cond [(fixnum? y) @@ -1233,7 +1233,7 @@ (if ($fl>= y x) x y))] [(ratnum? y) ;;; FIXME: optimize (if (>= x y) y x)] - [else (error 'min "not a number" y)])] + [else (die 'min "not a number" y)])] [(flonum? x) (cond [(flonum? y) @@ -1248,7 +1248,7 @@ ;;; FIXME: may be incorrect (let ([y (ratnum->flonum y)]) (if ($fl>= y x) x y))] - [else (error 'min "not a number" y)])] + [else (die 'min "not a number" y)])] [(ratnum? x) (cond [(or (fixnum? y) (bignum? y) (ratnum? y)) @@ -1256,8 +1256,8 @@ [(flonum? y) (let ([x (ratnum->flonum x)]) (if ($fl>= x y) y x))] - [else (error 'min "not a number" y)])] - [else (error 'min "not a number" x)])] + [else (die 'min "not a number" y)])] + [else (die 'min "not a number" x)])] [(x y z . rest) (let f ([a (min x y)] [b z] [ls rest]) (cond @@ -1267,7 +1267,7 @@ [(x) (if (number? x) x - (error 'min "not a number" x))])) + (die 'min "not a number" x))])) (define (abs x) (cond @@ -1284,7 +1284,7 @@ (if (< n 0) ($make-ratnum (- n) ($ratnum-d x)) x))] - [else (error 'abs "not a number" x)])) + [else (die 'abs "not a number" x)])) (define flmin (case-lambda @@ -1292,8 +1292,8 @@ (if (flonum? x) (if (flonum? y) (if ($fl< x y) x y) - (error 'flmin "not a flonum" y)) - (error 'flmin "not a flonum" x))] + (die 'flmin "not a flonum" y)) + (die 'flmin "not a flonum" x))] [(x y z . rest) (let f ([a (flmin x y)] [b z] [ls rest]) (cond @@ -1303,7 +1303,7 @@ [(x) (if (flonum? x) x - (error 'flmin "not a flonum" x))])) + (die 'flmin "not a flonum" x))])) (define exact->inexact (lambda (x) @@ -1312,7 +1312,7 @@ [(bignum? x) (bignum->flonum x)] [(ratnum? x) (ratnum->flonum x)] [else - (error 'exact->inexact + (die 'exact->inexact "not an exact number" x)]))) (define inexact @@ -1323,7 +1323,7 @@ [(ratnum? x) (ratnum->flonum x)] [(flonum? x) x] [else - (error 'inexact "not a number" x)]))) + (die 'inexact "not a number" x)]))) (define real->flonum (lambda (x) @@ -1333,7 +1333,7 @@ [(ratnum? x) (ratnum->flonum x)] [(flonum? x) x] [else - (error 'real->flonum "not a real number" x)]))) + (die 'real->flonum "not a real number" x)]))) (define positive-bignum? (lambda (x) @@ -1350,16 +1350,16 @@ (cond [(fixnum? x) ($fxeven? x)] [(bignum? x) (even-bignum? x)] - [(flonum? x) (error 'even? "BUG" x)] - [else (error 'even? "not an integer" x)])) + [(flonum? x) (die 'even? "BUG" x)] + [else (die 'even? "not an integer" x)])) (define (odd? x) (not (cond [(fixnum? x) ($fxeven? x)] [(bignum? x) (even-bignum? x)] - [(flonum? x) (error 'odd? "BUG" x)] - [else (error 'odd? "not an integer" x)]))) + [(flonum? x) (die 'odd? "BUG" x)] + [else (die 'odd? "not an integer" x)]))) (module (number->string) (module (bignum->string) @@ -1406,7 +1406,7 @@ [(2) (bignum->power-string x 1 1)] [(8) (bignum->power-string x 7 3)] [(16) (bignum->power-string x 15 4)] - [else (error 'number->string "BUG")]))) + [else (die 'number->string "BUG")]))) (define ratnum->string (lambda (x r) (string-append @@ -1420,21 +1420,21 @@ [(bignum? x) (bignum->string x r)] [(flonum? x) (unless (eqv? r 10) - (error 'number->string + (die 'number->string "invalid radix for inexact number" r x)) (flonum->string x)] [(ratnum? x) (ratnum->string x r)] - [else (error 'number->string "not a number" x)]))) + [else (die 'number->string "not a number" x)]))) (define number->string (case-lambda [(x) ($number->string x 10)] [(x r) (unless (memv r '(2 8 10 16)) - (error 'number->string "invalid radix" r)) + (die 'number->string "invalid radix" r)) ($number->string x r)] [(x r precision) - (error 'number->string + (die 'number->string "BUG: precision is not supported yet")]))) (define modulo @@ -1456,9 +1456,9 @@ (cond [v (inexact (modulo n v))] [else - (error 'modulo "not an integer" m)]))] - [(ratnum? m) (error 'modulo "not an integer" m)] - [else (error 'modulo "not a number" m)])] + (die 'modulo "not an integer" m)]))] + [(ratnum? m) (die 'modulo "not an integer" m)] + [else (die 'modulo "not a number" m)])] [(bignum? n) (cond [(fixnum? m) @@ -1476,17 +1476,17 @@ (cond [v (inexact (modulo n v))] [else - (error 'modulo "not an integer" m)]))] - [(ratnum? m) (error 'modulo "not an integer" m)] - [else (error 'modulo "not a number" m)])] + (die 'modulo "not an integer" m)]))] + [(ratnum? m) (die 'modulo "not an integer" m)] + [else (die 'modulo "not a number" m)])] [(flonum? n) (let ([v ($flonum->integer n)]) (cond [v (inexact (modulo v m))] [else - (error 'modulo "not an integer" n)]))] - [(ratnum? n) (error 'modulo "not an integer" n)] - [else (error 'modulo "not a number" n)]))) + (die 'modulo "not an integer" n)]))] + [(ratnum? n) (die 'modulo "not an integer" n)] + [else (die 'modulo "not a number" n)]))) (define-syntax mk< (syntax-rules () @@ -1495,7 +1495,7 @@ fxrt< rtfx< bnrt< rtbn< flrt< rtfl< rtrt<) (let () (define err - (lambda (x) (error 'name "not a number" x))) + (lambda (x) (die 'name "not a number" x))) (define fxloopt (lambda (x y ls) (cond @@ -1712,24 +1712,24 @@ (if (flonum? x) (if (flonum? y) ($fl< x y) - (error 'flinexact 0)])) @@ -1781,8 +1781,8 @@ (if (flonum? x) (if (flonum? y) ($fl- x y) - (error 'fl- "not a flonum" y)) - (error 'fl- "not a flonum" x))] + (die 'fl- "not a flonum" y)) + (die 'fl- "not a flonum" x))] [(x y z) (fl- (fl- x y) z)] [(x y z q . rest) @@ -1793,7 +1793,7 @@ [(x) (if (flonum? x) ($fl* -1.0 x) - (error 'fl+ "not a flonum" x))])) + (die 'fl+ "not a flonum" x))])) (define fl* (case-lambda @@ -1801,8 +1801,8 @@ (if (flonum? x) (if (flonum? y) ($fl* x y) - (error 'fl* "not a flonum" y)) - (error 'fl* "not a flonum" x))] + (die 'fl* "not a flonum" y)) + (die 'fl* "not a flonum" x))] [(x y z) (fl* (fl* x y) z)] [(x y z q . rest) @@ -1813,7 +1813,7 @@ [(x) (if (flonum? x) x - (error 'fl* "not a flonum" x))] + (die 'fl* "not a flonum" x))] [() 1.0])) (define fl/ @@ -1822,8 +1822,8 @@ (if (flonum? x) (if (flonum? y) ($fl/ x y) - (error 'fl/ "not a flonum" y)) - (error 'fl/ "not a flonum" x))] + (die 'fl/ "not a flonum" y)) + (die 'fl/ "not a flonum" x))] [(x y z) (fl/ (fl/ x y) z)] [(x y z q . rest) @@ -1834,7 +1834,7 @@ [(x) (if (flonum? x) ($fl/ 1.0 x) - (error 'fl/ "not a flonum" x))])) + (die 'fl/ "not a flonum" x))])) (flcmp flfl= flfx= fxfl= flbn= bnfl= $fl=) (flcmp flfl< flfx< fxfl< flbn< bnfl< $fl<) @@ -1886,7 +1886,7 @@ (foreign-call "ikrt_fxfxplus" x 1)] [(bignum? x) (foreign-call "ikrt_fxbnplus" 1 x)] - [else (error 'add1 "not a number" x)]))) + [else (die 'add1 "not a number" x)]))) (define sub1 (lambda (x) @@ -1895,7 +1895,7 @@ (foreign-call "ikrt_fxfxplus" x -1)] [(bignum? x) (foreign-call "ikrt_fxbnplus" -1 x)] - [else (error 'sub1 "not a number" x)]))) + [else (die 'sub1 "not a number" x)]))) (define zero? (lambda (x) @@ -1905,7 +1905,7 @@ [(flonum? x) (or ($fl= x 0.0) ($fl= x -0.0))] [else - (error 'zero? "not a number" x)]))) + (die 'zero? "not a number" x)]))) (define expt (lambda (n m) @@ -1918,7 +1918,7 @@ [else (binary* n (fxexpt (binary* n n) ($fxsra m 1)))]))) (unless (number? n) - (error 'expt "not a numebr" n)) + (die 'expt "not a numebr" n)) (cond [(fixnum? m) (if ($fx>= m 0) @@ -1935,10 +1935,10 @@ -1) (/ 1 (expt n (- m))))] [else - (error 'expt "result is too big to compute" n m)])] + (die 'expt "result is too big to compute" n m)])] [(flonum? m) (flexpt (inexact n) m)] [(ratnum? m) (flexpt (inexact n) (inexact m))] - [else (error 'expt "not a number" m)]))) + [else (die 'expt "not a number" m)]))) (define quotient (lambda (x y) @@ -1954,7 +1954,7 @@ (lambda (x y) (cond [(eq? y 0) - (error 'quotient+remainder + (die 'quotient+remainder "second argument must be non-zero")] [(fixnum? x) (cond @@ -1969,8 +1969,8 @@ (let-values ([(q r) (quotient+remainder x v)]) (values (inexact q) (inexact r)))] [else - (error 'quotient+remainder "not an integer" y)]))] - [else (error 'quotient+remainder "not a number" y)])] + (die 'quotient+remainder "not an integer" y)]))] + [else (die 'quotient+remainder "not a number" y)])] [(bignum? x) (cond [(fixnum? y) @@ -1986,16 +1986,16 @@ (let-values ([(q r) (quotient+remainder x v)]) (values (inexact q) (inexact r)))] [else - (error 'quotient+remainder "not an integer" y)]))] - [else (error 'quotient+remainder "not a number" y)])] + (die 'quotient+remainder "not an integer" y)]))] + [else (die 'quotient+remainder "not a number" y)])] [(flonum? x) (let ([v ($flonum->integer x)]) (cond [v (let-values ([(q r) (quotient+remainder v y)]) (values (inexact q) (inexact r)))] - [else (error 'quotient+remainder "not an integer" x)]))] - [else (error 'quotient+remainder "not a number" x)]))) + [else (die 'quotient+remainder "not an integer" x)]))] + [else (die 'quotient+remainder "not a number" x)]))) (define positive? (lambda (x) @@ -2004,7 +2004,7 @@ [(flonum? x) ($fl> x 0.0)] [(bignum? x) (positive-bignum? x)] [(ratnum? x) (positive? ($ratnum-n x))] - [else (error 'positive? "not a number" x)]))) + [else (die 'positive? "not a number" x)]))) (define negative? (lambda (x) @@ -2013,76 +2013,76 @@ [(flonum? x) ($fl< x 0.0)] [(bignum? x) (not (positive-bignum? x))] [(ratnum? x) (negative? ($ratnum-n x))] - [else (error 'negative? "not a number" x)]))) + [else (die 'negative? "not a number" x)]))) (define sin (lambda (x) (cond [(flonum? x) (foreign-call "ikrt_fl_sin" x)] [(fixnum? x) (foreign-call "ikrt_fx_sin" x)] - [else (error 'sin "BUG: unsupported" x)]))) + [else (die 'sin "BUG: unsupported" x)]))) (define cos (lambda (x) (cond [(flonum? x) (foreign-call "ikrt_fl_cos" x)] [(fixnum? x) (foreign-call "ikrt_fx_cos" x)] - [else (error 'cos "BUG: unsupported" x)]))) + [else (die 'cos "BUG: unsupported" x)]))) (define tan (lambda (x) (cond [(flonum? x) (foreign-call "ikrt_fl_tan" x)] [(fixnum? x) (foreign-call "ikrt_fx_tan" x)] - [else (error 'tan "BUG: unsupported" x)]))) + [else (die 'tan "BUG: unsupported" x)]))) (define asin (lambda (x) (cond [(flonum? x) (foreign-call "ikrt_fl_asin" x)] [(fixnum? x) (foreign-call "ikrt_fx_asin" x)] - [else (error 'asin "BUG: unsupported" x)]))) + [else (die 'asin "BUG: unsupported" x)]))) (define acos (lambda (x) (cond [(flonum? x) (foreign-call "ikrt_fl_acos" x)] [(fixnum? x) (foreign-call "ikrt_fx_acos" x)] - [else (error 'acos "BUG: unsupported" x)]))) + [else (die 'acos "BUG: unsupported" x)]))) (define atan (lambda (x) (cond [(flonum? x) (foreign-call "ikrt_fl_atan" x)] [(fixnum? x) (foreign-call "ikrt_fx_atan" x)] - [else (error 'atan "BUG: unsupported" x)]))) + [else (die 'atan "BUG: unsupported" x)]))) (define sqrt (lambda (x) (cond [(flonum? x) (foreign-call "ikrt_fl_sqrt" x)] [(fixnum? x) (foreign-call "ikrt_fx_sqrt" x)] - [(bignum? x) (error 'sqrt "BUG: bignum sqrt not implemented")] + [(bignum? x) (die 'sqrt "BUG: bignum sqrt not implemented")] [(ratnum? x) (/ (sqrt ($ratnum-n x)) (sqrt ($ratnum-d x)))] - [else (error 'sqrt "BUG: unsupported" x)]))) + [else (die 'sqrt "BUG: unsupported" x)]))) (define flsqrt (lambda (x) (if (flonum? x) (foreign-call "ikrt_fl_sqrt" x) - (error 'flsqrt "not a flonum" x)))) + (die 'flsqrt "not a flonum" x)))) (define flzero? (lambda (x) (if (flonum? x) ($flzero? x) - (error 'flzero? "not a flonum" x)))) + (die 'flzero? "not a flonum" x)))) (define flnegative? (lambda (x) (if (flonum? x) ($fl< x 0.0) - (error 'flnegative? "not a flonum" x)))) + (die 'flnegative? "not a flonum" x)))) (define exact-integer-sqrt (lambda (x) @@ -2106,7 +2106,7 @@ (cond [(fixnum? x) (cond - [($fx< x 0) (error who "invalid argument" x)] + [($fx< x 0) (die who "invalid argument" x)] [($fx= x 0) (values 0 0)] [($fx< x 4) (values 1 ($fx- x 1))] [($fx< x 9) (values 2 ($fx- x 4))] @@ -2116,8 +2116,8 @@ (cond [($bignum-positive? x) (bnsqrt x 23170 (quotient x 23170))] - [else (error who "invalid argument" x)])] - [else (error who "invalid argument" x)]))) + [else (die who "invalid argument" x)])] + [else (die who "invalid argument" x)]))) (define numerator @@ -2126,7 +2126,7 @@ [(ratnum? x) ($ratnum-n x)] [(or (fixnum? x) (bignum? x)) x] [(flonum? x) (flnumerator x)] - [else (error 'numerator "not an exact integer" x)]))) + [else (die 'numerator "not an exact integer" x)]))) (define denominator (lambda (x) @@ -2134,7 +2134,7 @@ [(ratnum? x) ($ratnum-d x)] [(or (fixnum? x) (bignum? x)) 1] [(flonum? x) (fldenominator x)] - [else (error 'denominator "not an exact integer" x)]))) + [else (die 'denominator "not an exact integer" x)]))) (define (floor x) @@ -2146,14 +2146,14 @@ [(flonum? x) ;;; optimize for integer flonums (let ([e (or ($flonum->exact x) - (error 'floor "number has no real value" x))]) + (die 'floor "number has no real value" x))]) (cond [(ratnum? e) (exact->inexact (ratnum-floor e))] [else x]))] [(ratnum? x) (ratnum-floor x)] [(or (fixnum? x) (bignum? x)) x] - [else (error 'floor "not a number" x)])) + [else (die 'floor "not a number" x)])) (define (ceiling x) (define (ratnum-ceiling x) @@ -2164,13 +2164,13 @@ [(flonum? x) ;;; optimize for integer flonums (let ([e (or ($flonum->exact x) - (error 'ceiling "number has no real value" x))]) + (die 'ceiling "number has no real value" x))]) (cond [(ratnum? e) (exact->inexact (ratnum-ceiling e))] [else x]))] [(ratnum? x) (ratnum-ceiling x)] [(or (fixnum? x) (bignum? x)) x] - [else (error 'ceiling "not a number" x)])) + [else (die 'ceiling "not a number" x)])) (define ($ratnum-round x) @@ -2200,7 +2200,7 @@ [(flonum? x) ($flround x)] [(ratnum? x) ($ratnum-round x)] [(or (fixnum? x) (bignum? x)) x] - [else (error 'round "not a number" x)])) + [else (die 'round "not a number" x)])) (define (truncate x) ;;; FIXME: fltruncate should preserve the sign of -0.0. @@ -2208,19 +2208,19 @@ (cond [(flonum? x) (let ([e (or ($flonum->exact x) - (error 'truncate "number has no real value" x))]) + (die 'truncate "number has no real value" x))]) (cond [(ratnum? e) (exact->inexact ($ratnum-truncate e))] [else x]))] [(ratnum? x) ($ratnum-truncate x)] [(or (fixnum? x) (bignum? x)) x] - [else (error 'truncate "not a number" x)])) + [else (die 'truncate "not a number" x)])) (define (fltruncate x) ;;; FIXME: fltruncate should preserve the sign of -0.0. (unless (flonum? x) - (error 'fltruncate "not a flonum" x)) + (die 'fltruncate "not a flonum" x)) (let ([v ($flonum->exact x)]) (cond [(ratnum? v) (exact->inexact ($ratnum-truncate v))] @@ -2232,23 +2232,23 @@ [(fixnum? x) (cond [($fx= x 1) 0] - [($fx= x 0) (error 'log "undefined around 0")] + [($fx= x 0) (die 'log "undefined around 0")] [($fx> x 0) (foreign-call "ikrt_fx_log" x)] - [else (error 'log "negative argument" x)])] + [else (die 'log "negative argument" x)])] [(flonum? x) (cond [(>= x 0) (foreign-call "ikrt_fl_log" x)] - [else (error 'log "negative argument" x)])] + [else (die 'log "negative argument" x)])] [(bignum? x) (log (exact->inexact x))] [(ratnum? x) (- (log (numerator x)) (log (denominator x)))] - [else (error 'log "not a number" x)]))) + [else (die 'log "not a number" x)]))) (define string->number (case-lambda [(x) (string->number-radix-10 x)] [(x r) (unless (eqv? r 10) - (error 'string->number + (die 'string->number "BUG: only radix 10 is supported" x r)) (string->number-radix-10 x)])) @@ -2281,7 +2281,7 @@ [(#\0) 0] [(#\1) 1] [else #f])] - [else (error 'convert-char "invalid radix" radix)])) + [else (die 'convert-char "invalid radix" radix)])) (define (parse-exponent-start x n i radix) (define (parse-exponent x n i radix ac) (cond @@ -2443,7 +2443,7 @@ [else #f]))])) ;;; (unless (string? x) - (error 'string->number "not a string" x)) + (die 'string->number "not a string" x)) (let ([n (string-length x)]) (cond [(fx= n (string-length "+xxx.0")) @@ -2463,8 +2463,8 @@ (foreign-call "ikrt_fxrandom" n) (if (fx= n 1) 0 - (error 'random "incorrect argument" n))) - (error 'random "not a fixnum" n))) + (die 'random "incorrect argument" n))) + (die 'random "not a fixnum" n))) (define (shift-right-arithmetic n m who) @@ -2474,41 +2474,41 @@ [(fixnum? n) (cond [($fx>= m 0) ($fxsra n m)] - [else (error who "offset must be non-negative" m)])] + [else (die who "offset must be non-negative" m)])] [(bignum? n) (cond [($fx> m 0) (foreign-call "ikrt_bignum_shift_right" n m)] [($fx= m 0) n] - [else (error who "offset must be non-negative" m)])] - [else (error who "not an exact integer" n)])] + [else (die who "offset must be non-negative" m)])] + [else (die who "not an exact integer" n)])] [(bignum? m) (cond [(fixnum? n) (if ($fx>= n 0) 0 -1)] [(bignum? n) (if ($bignum-positive? n) 0 -1)] - [else (error who "not an exact integer" n)])] - [else (error who "not an exact integer offset" m)])) + [else (die who "not an exact integer" n)])] + [else (die who "not an exact integer offset" m)])) (define (sra n m) (shift-right-arithmetic n m 'sra)) (define (shift-left-logical n m who) (unless (fixnum? m) - (error who "shift amount is not a fixnum")) + (die who "shift amount is not a fixnum")) (cond [(fixnum? n) (cond [($fx> m 0) (foreign-call "ikrt_fixnum_shift_left" n m)] [($fx= m 0) n] - [else (error who "offset must be non-negative" m)])] + [else (die who "offset must be non-negative" m)])] [(bignum? n) (cond [($fx> m 0) (foreign-call "ikrt_bignum_shift_left" n m)] [($fx= m 0) n] - [else (error who "offset must be non-negative" m)])] - [else (error who "not an exact integer" n)])) + [else (die who "offset must be non-negative" m)])] + [else (die who "not an exact integer" n)])) (define (sll n m) (shift-left-logical n m 'sll)) @@ -2520,7 +2520,7 @@ (define (bitwise-arithmetic-shift n m) (define who 'bitwise-arithmetic-shift) (unless (fixnum? m) - (error who "shift amount is not a fixnum")) + (die who "shift amount is not a fixnum")) (cond [(fixnum? n) (cond @@ -2530,7 +2530,7 @@ [else (let ([m^ (- m)]) (unless (fixnum? m^) - (error who "shift amount is too big" m)) + (die who "shift amount is too big" m)) ($fxsra n m^))])] [(bignum? n) (cond @@ -2540,9 +2540,9 @@ [else (let ([m^ (- m)]) (unless (fixnum? m^) - (error who "shift amount is too big" m)) + (die who "shift amount is too big" m)) (foreign-call "ikrt_bignum_shift_right" n m^))])] - [else (error who "not an exact integer" n)])) + [else (die who "not an exact integer" n)])) (define (exp x) (cond @@ -2551,7 +2551,7 @@ (if ($fx= x 0) 1 (flexp (fixnum->flonum x)))] [(bignum? x) (flexp (bignum->flonum x))] [(ratnum? x) (flexp (ratnum->flonum x))] - [else (error 'exp "not a number" x)])) + [else (die 'exp "not a number" x)])) ) @@ -2566,7 +2566,7 @@ (lambda (x) (if (number? x) x - (error 'real-part "not a number" x)))) + (die 'real-part "not a number" x)))) (define imag-part (lambda (x) @@ -2576,7 +2576,7 @@ [(ratnum? x) 0] [(flonum? x) 0.0] [else - (error 'imag-part "not a number" x)])))) + (die 'imag-part "not a number" x)])))) @@ -2721,7 +2721,7 @@ (if pos? "+inf.0" "-inf.0") ;;; Gee! nans have no sign! "+nan.0")] - [else (error 'flonum->string "cannot happen")])))) + [else (die 'flonum->string "cannot happen")])))) ;;; (define (string->flonum x) (cond @@ -2729,7 +2729,7 @@ (foreign-call "ikrt_bytevector_to_flonum" (string->utf8 x))] [else - (error 'string->flonum "not a string" x)])) ) + (die 'string->flonum "not a string" x)])) ) (library (ikarus rationalize) (export rationalize) @@ -2771,21 +2771,21 @@ (if (flfinite? eps) (go x eps) +nan.0)] [(or (fixnum? eps) (bignum? eps) (ratnum? eps)) (go x eps)] - [else (error who "not a number" eps)]) + [else (die who "not a number" eps)]) (cond [(flonum? eps) (if (flfinite? eps) x +nan.0)] [(or (fixnum? eps) (bignum? eps) (ratnum? eps)) x] - [else (error who "not a number" eps)]))] + [else (die who "not a number" eps)]))] [(or (fixnum? x) (bignum? x) (ratnum? x)) (cond [(flonum? eps) (if (flfinite? eps) (go x eps) +nan.0)] [(or (fixnum? eps) (bignum? eps) (ratnum? eps)) (go x eps)] - [else (error who "not a number" eps)])] - [else (error who "not a number" x)]))) + [else (die who "not a number" eps)])] + [else (die who "not a number" x)]))) (library (ikarus r6rs-fu div/mod) @@ -2819,14 +2819,14 @@ [(fixnum? m) (cond [($fx= m 0) - (error who "division by 0")] + (die who "division by 0")] [(or (fixnum? n) (bignum? n)) (int-div-and-mod n m)] [(flonum? n) (fldiv-and-mod n (fixnum->flonum m))] [(ratnum? n) (rat-div-and-mod n m)] - [else (error who "not a number" n)])] + [else (die who "not a number" n)])] [(bignum? m) (cond [(or (fixnum? n) (bignum? n)) @@ -2834,12 +2834,12 @@ [(flonum? n) (let ([v ($flonum->exact n)]) (unless v - (error who "invalid argument" n)) + (die who "invalid argument" n)) (let-values ([(a b) (div-and-mod* v m who)]) (values (inexact a) (inexact b))))] [(ratnum? n) (rat-div-and-mod n m)] - [else (error who "not a number" n)])] + [else (die who "not a number" n)])] [(ratnum? m) (cond [(or (fixnum? n) (bignum? n) (ratnum? n)) @@ -2847,25 +2847,25 @@ [(flonum? n) (let ([v ($flonum->exact n)]) (unless v - (error who "invalid argument" n)) + (die who "invalid argument" n)) (let-values ([(a b) (div-and-mod* v m who)]) (values (inexact a) (inexact b))))] - [else (error who "not a number" n)])] + [else (die who "not a number" n)])] [(flonum? m) (cond [($fl= m 0.0) - (error who "division by 0.0")] + (die who "division by 0.0")] [(flonum? n) (fldiv-and-mod n m)] [(fixnum? n) (fldiv-and-mod (fixnum->flonum n) m)] [(or (bignum? n) (ratnum? n)) (let ([v ($flonum->exact m)]) (unless v - (error who "invalid argument" m)) + (die who "invalid argument" m)) (let-values ([(a b) (div-and-mod* n v who)]) (values (inexact a) (inexact b))))] - [else (error who "not a number" n)])] - [else (error who "not a number" m)])) + [else (die who "not a number" n)])] + [else (die who "not a number" m)])) (define (div-and-mod n m) (div-and-mod* n m 'div-and-mod)) @@ -2880,9 +2880,9 @@ (define (div0-and-mod0 x y) (define who 'div0-and-mod0) (unless (integer? x) - (error who "not an integer" x)) + (die who "not an integer" x)) (unless (and (integer? y) (not (= y 0))) - (error who "not an integer" y)) + (die who "not an integer" y)) (let-values ([(d m) (div-and-mod x y)]) (if (> y 0) (if (< m (/ y 2)) @@ -2939,22 +2939,22 @@ (if (flonum? n) (if (flonum? m) ($fldiv n m) - (error 'fldiv "not a flonum" m)) - (error 'fldiv "not a flonum" n))) + (die 'fldiv "not a flonum" m)) + (die 'fldiv "not a flonum" n))) (define (flmod n m) (if (flonum? n) (if (flonum? m) ($flmod n m) - (error 'flmod "not a flonum" m)) - (error 'flmod "not a flonum" n))) + (die 'flmod "not a flonum" m)) + (die 'flmod "not a flonum" n))) (define (fldiv-and-mod n m) (if (flonum? n) (if (flonum? m) ($fldiv-and-mod n m) - (error 'fldiv-and-mod "not a flonum" m)) - (error 'fldiv-and-mod "not a flonum" n))) + (die 'fldiv-and-mod "not a flonum" m)) + (die 'fldiv-and-mod "not a flonum" n))) (define ($fldiv0-and-mod0 n m) (let ([d0 (fltruncate ($fl/ n m))]) @@ -3005,22 +3005,22 @@ (if (flonum? n) (if (flonum? m) ($fldiv0 n m) - (error 'fldiv0 "not a flonum" m)) - (error 'fldiv0 "not a flonum" n))) + (die 'fldiv0 "not a flonum" m)) + (die 'fldiv0 "not a flonum" n))) (define (flmod0 n m) (if (flonum? n) (if (flonum? m) ($flmod0 n m) - (error 'flmod0 "not a flonum" m)) - (error 'flmod0 "not a flonum" n))) + (die 'flmod0 "not a flonum" m)) + (die 'flmod0 "not a flonum" n))) (define (fldiv0-and-mod0 n m) (if (flonum? n) (if (flonum? m) ($fldiv0-and-mod0 n m) - (error 'fldiv0-and-mod0 "not a flonum" m)) - (error 'fldiv0-and-mod0 "not a flonum" n)))) + (die 'fldiv0-and-mod0 "not a flonum" m)) + (die 'fldiv0-and-mod0 "not a flonum" n)))) (library (ikarus bitwise misc) (export fxfirst-bit-set bitwise-bit-set? bitwise-first-bit-set @@ -3082,13 +3082,13 @@ (cond [(fixnum? x) ($fxfirst-bit-set x)] - [else (error 'fxfirst-bit-set "not a fixnum" x)])) + [else (die 'fxfirst-bit-set "not a fixnum" x)])) (define (bitwise-first-bit-set x) (cond [(fixnum? x) ($fxfirst-bit-set x)] [(bignum? x) ($bnloop x 0 0)] - [else (error 'bitwise-first-bit-set "not an exact integer" x)]))) + [else (die 'bitwise-first-bit-set "not an exact integer" x)]))) (module (fxbit-count bitwise-bit-count) (define (pos-fxbitcount n) @@ -3126,12 +3126,12 @@ (define (fxbit-count n) (cond [(fixnum? n) ($fxbitcount n)] - [else (error 'fxbit-count "not a fixnum" n)])) + [else (die 'fxbit-count "not a fixnum" n)])) (define (bitwise-bit-count n) (cond [(fixnum? n) ($fxbitcount n)] [(bignum? n) (bnbitcount n)] - [else (error 'bitwise-bit-count "not an exact integer" n)]))) + [else (die 'bitwise-bit-count "not an exact integer" n)]))) (define (fxlength x) (if (fixnum? x) @@ -3143,7 +3143,7 @@ (cond [($fx= sbe 0) 0] [else ($fx- sbe 1022)]))) - (error 'fxlength "not a fixnum" x))) + (die 'fxlength "not a fixnum" x))) (define (fxbit-set? x i) (define who 'fxbit-set?) @@ -3151,16 +3151,16 @@ (if (fixnum? i) (if (and ($fx<= 0 i) ($fx< i (fixnum-width))) (not ($fxzero? ($fxlogand ($fxsra x i) 1))) - (error who "index out of range" i)) - (error who "index is not a fixnum" i)) - (error who "not a fixnum" x))) + (die who "index out of range" i)) + (die who "index is not a fixnum" i)) + (die who "not a fixnum" x))) (define (bitwise-bit-set? x i) (define who 'bitwise-bit-set?) (cond [(fixnum? i) (when ($fx< i 0) - (error who "index must be non-negative" i)) + (die who "index must be non-negative" i)) (cond [(fixnum? x) (if ($fx< i (fixnum-width)) @@ -3177,17 +3177,17 @@ (= 1 (bitwise-and (bitwise-arithmetic-shift-right x i) 1))))))] - [else (error who "not an exact integer" x)])] + [else (die who "not an exact integer" x)])] [(bignum? i) (unless ($bignum-positive? i) - (error who "index must be non-negative")) + (die who "index must be non-negative")) (cond [(fixnum? x) ($fx< x 0)] [(bignum? x) (= 1 (bitwise-and (bitwise-arithmetic-shift-right x i) 1))] - [else (error who "not an exact integer" x)])] + [else (die who "not an exact integer" x)])] [else - (error who "index is not an exact integer" i)])) + (die who "index is not an exact integer" i)])) (define (fxcopy-bit x i b) @@ -3198,10 +3198,10 @@ (case b [(0) ($fxlogand x ($fxlognot ($fxsll 1 i)))] [(1) ($fxlogor x ($fxsll 1 i))] - [else (error who "invalid bit value" b)]) - (error who "index out of range" i)) - (error who "index is not a fixnum" i)) - (error who "not a fixnum" x))) + [else (die who "invalid bit value" b)]) + (die who "index out of range" i)) + (die who "index is not a fixnum" i)) + (die who "not a fixnum" x))) (define (fxcopy-bit-field x i j b) (define who 'fxcopy-bit-field) @@ -3219,15 +3219,15 @@ ($fxlogor ($fxlogand m b) ($fxlogand ($fxlognot m) x))) - (error who "not a fixnum" b)) + (die who "not a fixnum" b)) (if ($fx<= 0 j) - (error who "index out of range" j) - (error who "indices not in order" i j))) - (error who "index out of range" j)) - (error who "not a fixnum" j)) - (error who "index out of range" i)) - (error who "not a fixnum" i)) - (error who "not a fixnum" x))) + (die who "index out of range" j) + (die who "indices not in order" i j))) + (die who "index out of range" j)) + (die who "not a fixnum" j)) + (die who "index out of range" i)) + (die who "not a fixnum" i)) + (die who "not a fixnum" x))) (define (fxbit-field x i j) (define who 'fxbit-field) @@ -3241,13 +3241,13 @@ ($fxlogand x ($fxsub1 ($fxsll 1 j))) i) (if ($fx<= 0 j) - (error who "index out of range" j) - (error who "indices not in order" i j))) - (error who "index out of range" j)) - (error who "not a fixnum" j)) - (error who "index out of range" i)) - (error who "not a fixnum" i)) - (error who "not a fixnum" x))) + (die who "index out of range" j) + (die who "indices not in order" i j))) + (die who "index out of range" j)) + (die who "not a fixnum" j)) + (die who "index out of range" i)) + (die who "not a fixnum" i)) + (die who "not a fixnum" x))) ) diff --git a/scheme/ikarus.pairs.ss b/scheme/ikarus.pairs.ss index 834dd03..241cc61 100644 --- a/scheme/ikarus.pairs.ss +++ b/scheme/ikarus.pairs.ss @@ -39,13 +39,13 @@ (define set-car! (lambda (x y) (unless (pair? x) - (error 'set-car! "not a pair" x)) + (die 'set-car! "not a pair" x)) ($set-car! x y))) (define set-cdr! (lambda (x y) (unless (pair? x) - (error 'set-cdr! "not a pair" x)) + (die 'set-cdr! "not a pair" x)) ($set-cdr! x y))) (define-syntax cxr @@ -65,7 +65,7 @@ (begin (define name* (lambda (x) - ((cxr (error 'name* "invalid list structure" x) ops** ...) + ((cxr (die 'name* "invalid list structure" x) ops** ...) x))) ...)])) diff --git a/scheme/ikarus.posix.ss b/scheme/ikarus.posix.ss index 88cc6bb..84c12a4 100644 --- a/scheme/ikarus.posix.ss +++ b/scheme/ikarus.posix.ss @@ -33,55 +33,55 @@ (cond [(fx= pid 0) (child-proc)] [(fx= pid -1) - (error 'fork "failed")] + (die 'fork "failed")] [else (parent-proc pid)])))) (define waitpid (lambda (pid) (unless (fixnum? pid) - (error 'waitpid "not a fixnum" pid)) + (die 'waitpid "not a fixnum" pid)) (foreign-call "ikrt_waitpid" pid))) (define system (lambda (x) (unless (string? x) - (error 'system "not a string" x)) + (die 'system "not a string" x)) (let ([rv (foreign-call "ik_system" (string->utf8 x))]) (if (fx= rv -1) - (error 'system "failed") + (die 'system "failed") rv)))) (define file-exists? (lambda (x) (unless (string? x) - (error 'file-exists? "filename is not a string" x)) + (die 'file-exists? "filename is not a string" x)) (let ([v (foreign-call "ikrt_file_exists" (string->utf8 x))]) (cond [(boolean? v) v] [else - (error 'file-exists? + (die 'file-exists? (case v [(1) "the path contains a non-directory"] [(2) "the path is too long"] [(3) "the path is not accessible"] [(4) "the path contains too many symbolic links"] - [(5) "internal access error while accessing"] - [(6) "IO error encountered while accessing"] - [else "Unknown error"]) + [(5) "internal access die while accessing"] + [(6) "IO die encountered while accessing"] + [else "Unknown die"]) x)])))) (define delete-file (lambda (x) (unless (string? x) - (error 'delete-file "filename is not a string" x)) + (die 'delete-file "filename is not a string" x)) (let ([v (foreign-call "ikrt_delete_file" (string->utf8 x))]) (case v [(0) (void)] [else - (error 'delete-file + (die 'delete-file (case v [(1) "the path contains a non-directory"] [(2) "the path is too long"] @@ -90,10 +90,10 @@ [(5) "the path contains too many symbolic links"] [(6) "you do not have permissions to delete file"] [(7) "device is busy"] - [(8) "IO error encountered while deleting"] + [(8) "IO die encountered while deleting"] [(9) "is in a read-only file system"] - [(10) "internal access error while deleting"] - [else "Unknown error while deleting"]) + [(10) "internal access die while deleting"] + [else "Unknown die while deleting"]) x)])))) (define ($getenv-bv key) @@ -104,7 +104,7 @@ (define (getenv key) (if (string? key) ($getenv-str key) - (error 'getenv "the key is not a string" key))) + (die 'getenv "the key is not a string" key))) (define env (let () @@ -113,20 +113,20 @@ [(key) (if (string? key) (foreign-call "ikrt_getenv" key) - (error 'env "the key is not a string" key))] + (die 'env "the key is not a string" key))] [(key val) (env key val #t)] [(key val overwrite?) (if (string? key) (if (string? val) (unless (foreign-call "ikrt_setenv" key val overwrite?) - (error 'env "failed" key val)) - (error 'env "the value is not a string" val)) - (error 'env "the key is not a string" key))])) - (define busted (lambda args (error 'env "BUG: busted!"))) + (die 'env "failed" key val)) + (die 'env "the value is not a string" val)) + (die 'env "the key is not a string" key))])) + (define busted (lambda args (die 'env "BUG: busted!"))) busted)) - (define environ (lambda args (error 'environ "busted!"))) + (define environ (lambda args (die 'environ "busted!"))) (define environ^ (lambda () (map diff --git a/scheme/ikarus.predicates.ss b/scheme/ikarus.predicates.ss index 390d92f..28cd478 100644 --- a/scheme/ikarus.predicates.ss +++ b/scheme/ikarus.predicates.ss @@ -121,7 +121,7 @@ [(sys:ratnum? x) #t] [(sys:flonum? x) #f] [else - (error 'exact? "not a number" x)]))) + (die 'exact? "not a number" x)]))) (define inexact? @@ -132,7 +132,7 @@ [(sys:bignum? x) #f] [(sys:ratnum? x) #f] [else - (error 'inexact? "not a number" x)]))) + (die 'inexact? "not a number" x)]))) (define finite? (lambda (x) @@ -142,7 +142,7 @@ [(sys:bignum? x) #t] [(sys:ratnum? x) #t] [else - (error 'finite? "not a number" x)]))) + (die 'finite? "not a number" x)]))) (define infinite? (lambda (x) @@ -152,7 +152,7 @@ [(sys:bignum? x) #f] [(sys:ratnum? x) #f] [else - (error 'infinite? "not a number" x)]))) + (die 'infinite? "not a number" x)]))) (define nan? (lambda (x) @@ -162,7 +162,7 @@ [(sys:bignum? x) #f] [(sys:ratnum? x) #f] [else - (error 'nan? "not a number" x)]))) + (die 'nan? "not a number" x)]))) @@ -204,8 +204,8 @@ #t (if (sys:boolean? y) #f - (error 'boolean=? "not a boolean" y))) - (error 'boolean=? "not a boolean" x)))) + (die 'boolean=? "not a boolean" y))) + (die 'boolean=? "not a boolean" x)))) (define symbol=? @@ -215,8 +215,8 @@ #t (if (sys:symbol? y) #f - (error 'symbol=? "not a symbol" y))) - (error 'symbol=? "not a symbol" x)))) + (die 'symbol=? "not a symbol" y))) + (die 'symbol=? "not a symbol" x)))) (module (equal?) (define vector-loop diff --git a/scheme/ikarus.pretty-print.ss b/scheme/ikarus.pretty-print.ss index bce2d42..3fabb81 100644 --- a/scheme/ikarus.pretty-print.ss +++ b/scheme/ikarus.pretty-print.ss @@ -31,7 +31,7 @@ (make-parameter 60 (lambda (x) (unless (and (exact? x) (integer? x) (> x 0)) - (error 'pretty-width "invalid argument" x)) + (die 'pretty-width "invalid argument" x)) x))) (define (pretty-indent) 1) @@ -48,7 +48,7 @@ [(mbox? x) (mbox-length x)] [(vbox? x) (vbox-length x)] [(fbox? x) (fbox-length x)] - [else (error 'boxify "invalid box" x)])) + [else (die 'boxify "invalid box" x)])) (define (boxify x) (define (conc . a*) (let ([n @@ -459,7 +459,7 @@ [(mbox? x) (output-mbox x p col)] [(vbox? x) (output-vbox x p col)] [(fbox? x) (output-fbox x p col)] - [else (error 'pretty-print-output "invalid" x)])) + [else (die 'pretty-print-output "invalid" x)])) (f x p 0) (newline p)) ;;; @@ -608,7 +608,7 @@ [(x p) (if (output-port? p) (pretty x p) - (error 'pretty-print "not an output port" p))])) + (die 'pretty-print "not an output port" p))])) ;;; standard formats (set-fmt! 'quote '(read-macro . "'")) (set-fmt! 'unquote '(read-macro . ",")) @@ -675,7 +675,7 @@ [(x p) (if (output-port? p) (pretty x p) - (error 'pretty-print "not an output port" p))]))) + (die 'pretty-print "not an output port" p))]))) (test '(384 7384 83947 893478 9137489 3894789 134789314 79817238 97314897 318947138974 981374 89137489 1374897 13498713 @@ -706,5 +706,5 @@ (with-input-from-file fname read))]) (if (equal? x y) (f (fxadd1 i)) - (error 'test-file "mismatch" x y))))))))) + (die 'test-file "mismatch" x y))))))))) diff --git a/scheme/ikarus.promises.ss b/scheme/ikarus.promises.ss index 064be82..a404579 100644 --- a/scheme/ikarus.promises.ss +++ b/scheme/ikarus.promises.ss @@ -21,12 +21,12 @@ (define (force x) (unless (procedure? x) - (error 'force "not a procedure" x)) + (die 'force "not a procedure" x)) (x)) (define (make-promise proc) (unless (procedure? proc) - (error 'make-promise "not a procedure" proc)) + (die 'make-promise "not a procedure" proc)) (let ([results #f]) (lambda () (if results diff --git a/scheme/ikarus.reader.ss b/scheme/ikarus.reader.ss index b6a39f7..57644c3 100644 --- a/scheme/ikarus.reader.ss +++ b/scheme/ikarus.reader.ss @@ -79,13 +79,13 @@ (read-char p) (tokenize-backslash ls p)] [else - (error 'tokenize "invalid identifier syntax" + (die 'tokenize "invalid identifier syntax" (list->string (reverse (cons c ls))))])))) (define (tokenize-string ls p) (let ([c (read-char p)]) (cond [(eof-object? c) - (error 'tokenize "invalid eof inside string")] + (die 'tokenize "invalid eof inside string")] [else (tokenize-string-char ls p c)]))) (define (tokenize-string-char ls p c) (define (intraline-whitespace? c) @@ -94,13 +94,13 @@ (define (tokenize-string-continue ls p c) (cond [(eof-object? c) - (error 'tokenize "invalid eof inside string")] + (die 'tokenize "invalid eof inside string")] [(intraline-whitespace? c) (let f () (let ([c (read-char p)]) (cond [(eof-object? c) - (error 'tokenize "invalid eof inside string")] + (die 'tokenize "invalid eof inside string")] [(intraline-whitespace? c) (f)] [else (tokenize-string-char ls p c)])))] [else (tokenize-string-char ls p c)])) @@ -110,7 +110,7 @@ (let ([c (read-char p)]) (cond [(eof-object? c) - (error 'tokenize "invalid eof after string escape")] + (die 'tokenize "invalid eof after string escape")] [($char= #\a c) (tokenize-string (cons #\x7 ls) p)] [($char= #\b c) (tokenize-string (cons #\x8 ls) p)] [($char= #\t c) (tokenize-string (cons #\x9 ls) p)] @@ -124,32 +124,32 @@ (let ([c (read-char p)]) (cond [(eof-object? c) - (error 'tokenize "invalid eof inside string")] + (die 'tokenize "invalid eof inside string")] [(hex c) => (lambda (n) (let f ([n n]) (let ([c (read-char p)]) (cond [(eof-object? n) - (error 'tokenize "invalid eof inside string")] + (die 'tokenize "invalid eof inside string")] [(hex c) => (lambda (v) (f (+ (* n 16) v)))] [($char= c #\;) (tokenize-string (cons (integer->char n) ls) p)] [else - (error 'tokenize + (die 'tokenize "invalid char in escape sequence" c)]))))] [else - (error 'tokenize + (die 'tokenize "invalid char in escape sequence" c)]))] [(intraline-whitespace? c) (let f () (let ([c (read-char p)]) (cond [(eof-object? c) - (error 'tokenize "invalid eof inside string")] + (die 'tokenize "invalid eof inside string")] [(intraline-whitespace? c) (f)] [(memv c '(#\xA #\x85 #\x2028)) (tokenize-string-continue ls p (read-char p))] @@ -161,7 +161,7 @@ [else (tokenize-string-continue ls p c)]))] [else - (error 'tokenize + (die 'tokenize "non-whitespace character after escape")])))] [(memv c '(#\xA #\x85 #\x2028)) (tokenize-string-continue ls p (read-char p))] @@ -172,7 +172,7 @@ (tokenize-string-continue ls p (read-char p))] [else (tokenize-string-continue ls p c)]))] - [else (error 'tokenize "invalid string escape" c)]))] + [else (die 'tokenize "invalid string escape" c)]))] [(memv c '(#\xA #\x85 #\x2028)) (tokenize-string (cons #\linefeed ls) p)] [(memv c '(#\xD)) @@ -200,7 +200,7 @@ (let ([c (peek-char p)]) (cond [(eof-object? c) - (error 'tokenize "invalid syntax .. near end of file")] + (die 'tokenize "invalid syntax .. near end of file")] [($char= c #\.) ; this is the third (read-char p) (let ([c (peek-char p)]) @@ -208,10 +208,10 @@ [(eof-object? c) '(datum . ...)] [(delimiter? c) '(datum . ...)] [else - (error 'tokenize "invalid syntax" + (die 'tokenize "invalid syntax" (string-append "..." (string c)))]))] [else - (error 'tokenize "invalid syntax" + (die 'tokenize "invalid syntax" (string-append ".." (string c)))]))] [else (cons 'datum @@ -224,17 +224,17 @@ (cond [(eof-object? c) d] [(delimiter? c) d] - [else (error 'tokenize "invalid character after sequence" + [else (die 'tokenize "invalid character after sequence" (string-append (string c) str))]))] [else (let ([c (read-char p)]) (cond [(eof-object? c) - (error 'tokenize "invalid eof in the middle of expected sequence" str)] + (die 'tokenize "invalid eof in the middle of expected sequence" str)] [($char= c (string-ref str i)) (tokenize-char* (fxadd1 i) str p d)] [else - (error 'tokenize + (die 'tokenize "invalid char while scanning string" c str)]))]))) (define tokenize-char-seq @@ -246,14 +246,14 @@ [($char= (string-ref str 1) c) (read-char p) (tokenize-char* 2 str p d)] - [else (error 'tokenize "invalid syntax" + [else (die 'tokenize "invalid syntax" (string-ref str 0) c)])))) (define tokenize-char (lambda (p) (let ([c (read-char p)]) (cond [(eof-object? c) - (error 'tokenize "invalid #\\ near end of file")] + (die 'tokenize "invalid #\\ near end of file")] [(eqv? #\n c) (let ([c (peek-char p)]) (cond @@ -269,7 +269,7 @@ [(delimiter? c) '(datum . #\n)] [else - (error 'tokenize "invalid syntax" + (die 'tokenize "invalid syntax" (string #\# #\\ #\n c))]))] [(eqv? #\a c) (tokenize-char-seq p "alarm" '(datum . #\x7))] @@ -311,9 +311,9 @@ (read-char p) (f (+ (* v 16) v0)))] [else - (error 'tokenize "invalid character sequence")]))))] + (die 'tokenize "invalid character sequence")]))))] [else - (error 'tokenize "invalid character sequence" + (die 'tokenize "invalid character sequence" (string-append "#\\" (string n)))]))] [else (let ([n (peek-char p)]) @@ -321,7 +321,7 @@ [(eof-object? n) (cons 'datum c)] [(delimiter? n) (cons 'datum c)] [else - (error 'tokenize "invalid syntax" + (die 'tokenize "invalid syntax" (string-append "#\\" (string c n)))]))])))) (define (hex x) (cond @@ -336,7 +336,7 @@ [else #f])) (define multiline-error (lambda () - (error 'tokenize + (die 'tokenize "end of file encountered while inside a #|-style comment"))) (define apprev (lambda (str i ac) @@ -379,27 +379,27 @@ (let ([c (read-char p)]) (cond [(eof-object? c) - (error 'tokenize "invalid eof inside" caller)] + (die 'tokenize "invalid eof inside" caller)] [(char-whitespace? c) (skip-whitespace p caller)] [else c]))) (define tokenize-hash/c (lambda (c p) (cond - [(eof-object? c) (error 'tokenize "invalid # near end of file")] + [(eof-object? c) (die 'tokenize "invalid # near end of file")] [(memq c '(#\t #\T)) (let ([c (peek-char p)]) (cond [(eof-object? c) '(datum . #t)] [(delimiter? c) '(datum . #t)] - [else (error 'tokenize + [else (die 'tokenize (format "invalid syntax near #~a" c))]))] [(memq c '(#\f #\F)) (let ([c (peek-char p)]) (cond [(eof-object? c) '(datum . #f)] [(delimiter? c) '(datum . #f)] - [else (error 'tokenize + [else (die 'tokenize (format "invalid syntax near #~a" c))]))] [($char= #\\ c) (tokenize-char p)] [($char= #\( c) 'vparen] @@ -417,11 +417,11 @@ [($char= #\! c) (let ([e (read-char p)]) (when (eof-object? e) - (error 'tokenize "invalid eof near #!")) + (die 'tokenize "invalid eof near #!")) (case e [(#\e) (when (eq? (port-mode p) 'r6rs-mode) - (error 'tokenize "invalid syntax: #!e")) + (die 'tokenize "invalid syntax: #!e")) (read-char* p '(#\e) "of" "eof sequence" #f #f) (cons 'datum (eof-object))] [(#\r) @@ -433,16 +433,16 @@ (set-port-mode! p 'ikarus-mode) (tokenize p)] [else - (error 'tokenize + (die 'tokenize (format "invalid syntax near #!~a" e))]))] [(digit? c) (when (eq? (port-mode p) 'r6rs-mode) - (error 'tokenize "graph syntax is invalid in #!r6rs mode" + (die 'tokenize "graph syntax is invalid in #!r6rs mode" (format "#~a" c))) (tokenize-hashnum p (char->num c))] [($char= #\: c) (when (eq? (port-mode p) 'r6rs-mode) - (error 'tokenize "gensym syntax is invalid in #!r6rs mode" + (die 'tokenize "gensym syntax is invalid in #!r6rs mode" (format "#~a" c))) (let* ([c (skip-whitespace p "gensym")] [id0 @@ -454,12 +454,12 @@ (list->string (reverse (tokenize-bar p '())))] [else - (error 'tokenize + (die 'tokenize "invalid char inside gensym" c)])]) (cons 'datum (gensym id0)))] [($char= #\{ c) (when (eq? (port-mode p) 'r6rs-mode) - (error 'tokenize "gensym syntax is invalid in #!r6rs mode" + (die 'tokenize "gensym syntax is invalid in #!r6rs mode" (format "#~a" c))) (let* ([c (skip-whitespace p "gensym")] [id0 @@ -471,7 +471,7 @@ (list->string (reverse (tokenize-bar p '())))] [else - (error 'tokenize + (die 'tokenize "invalid char inside gensym" c)])] [c (skip-whitespace p "gensym")]) (cond @@ -491,7 +491,7 @@ (list->string (reverse (tokenize-bar p '())))] [else - (error 'tokenize + (die 'tokenize "invalid char inside gensym" c)])]) (let ([c (skip-whitespace p "gensym")]) (cond @@ -500,7 +500,7 @@ (foreign-call "ikrt_strings_to_gensym" id0 id1))] [else - (error 'tokenize + (die 'tokenize "invalid char inside gensym" c)])))]))] [($char= #\v c) (let ([c (read-char p)]) @@ -513,16 +513,16 @@ (cond [($char= c #\() 'vu8] [(eof-object? c) - (error 'tokenize "invalid eof object after #vu8")] - [else (error 'tokenize + (die 'tokenize "invalid eof object after #vu8")] + [else (die 'tokenize (format "invalid sequence #vu8~a" c))]))] [(eof-object? c) - (error 'tokenize "invalid eof object after #vu")] - [else (error 'tokenize + (die 'tokenize "invalid eof object after #vu")] + [else (die 'tokenize (format "invalid sequence #vu~a" c))]))] [(eof-object? c) - (error 'tokenize "invalid eof object after #v")] - [else (error 'tokenize + (die 'tokenize "invalid eof object after #v")] + [else (die 'tokenize (format "invalid sequence #v~a" c))]))] [(memq c '(#\e #\E)) (cons 'datum (tokenize-exactness-mark p (list c #\#) 'e))] @@ -538,12 +538,12 @@ (cons 'datum (tokenize-radix-mark p (list c #\#) 10))] [($char= #\@ c) (when (eq? (port-mode p) 'r6rs-mode) - (error 'tokenize "fasl syntax is invalid in #!r6rs mode" + (die 'tokenize "fasl syntax is invalid in #!r6rs mode" (format "#~a" c))) - (error 'read "FIXME: fasl read disabled") + (die 'read "FIXME: fasl read disabled") '(cons 'datum ($fasl-read p))] [else - (error 'tokenize + (die 'tokenize (format "invalid syntax #~a" c))]))) (define (tokenize-exactness-mark p ls exact?) (let ([c (read-char p)]) @@ -771,7 +771,7 @@ [(#\0) 0] [(#\1) 1] [else #f])] - [else (error 'radix-digit "invalid radix" radix)])) + [else (die 'radix-digit "invalid radix" radix)])) (define (read-char* p ls str who ci? delimited?) (let f ([i 0] [ls ls]) (cond @@ -779,20 +779,20 @@ (when delimited? (let ([c (peek-char p)]) (when (and (not (eof-object? c)) (not (delimiter? c))) - (error 'tokenize + (die 'tokenize (format "invalid ~a: ~s" who (list->string (reverse (cons c ls))))))))] [else (let ([c (read-char p)]) (cond [(eof-object? c) - (error 'tokenize + (die 'tokenize (format "invalid eof inside ~a" who))] [(or (and (not ci?) (char=? c (string-ref str i))) (and ci? (char=? (char-downcase c) (string-ref str i)))) (f (add1 i) (cons c ls))] [else - (error 'tokenize + (die 'tokenize (format "invalid ~a: ~s" who (list->string (reverse (cons c ls)))))]))]))) (define (tokenize-integer/nan/inf-no-digits p ls) @@ -824,30 +824,30 @@ (tokenize-decimal-no-digits p (cons c ls) exact?)] [else (num-error "invalid sequence" (cons c ls))]))) (define (num-error str ls) - (error 'read "invalid numeric sequence" + (die 'read "invalid numeric sequence" (list->string (reverse ls)))) (define (tokenize-hashnum p n) (let ([c (read-char p)]) (cond [(eof-object? c) - (error 'tokenize "invalid eof inside #n mark/ref")] + (die 'tokenize "invalid eof inside #n mark/ref")] [($char= #\= c) (cons 'mark n)] [($char= #\# c) (cons 'ref n)] [(digit? c) (tokenize-hashnum p (fx+ (fx* n 10) (char->num c)))] [else - (error 'tokenize "invalid char while inside a #n mark/ref" c)]))) + (die 'tokenize "invalid char while inside a #n mark/ref" c)]))) (define tokenize-bar (lambda (p ac) (let ([c (read-char p)]) (cond [(eof-object? c) - (error 'tokenize "unexpected eof while reading symbol")] + (die 'tokenize "unexpected eof while reading symbol")] [($char= #\\ c) (let ([c (read-char p)]) (cond [(eof-object? c) - (error 'tokenize "unexpected eof while reading symbol")] + (die 'tokenize "unexpected eof while reading symbol")] [else (tokenize-bar p (cons c ac))]))] [($char= #\| c) ac] [else (tokenize-bar p (cons c ac))])))) @@ -855,19 +855,19 @@ (let ([c (read-char p)]) (cond [(eof-object? c) - (error 'tokenize "invalid eof after symbol escape")] + (die 'tokenize "invalid eof after symbol escape")] [($char= #\x c) (let ([c (read-char p)]) (cond [(eof-object? c) - (error 'tokenize "invalid eof after \\x")] + (die 'tokenize "invalid eof after \\x")] [(hex c) => (lambda (v) (let f ([v v] [ac `(,c #\x #\\)]) (let ([c (read-char p)]) (cond [(eof-object? c) - (error 'tokenize + (die 'tokenize (format "invalid eof after ~a" (list->string (reverse ac))))] [($char= #\; c) @@ -876,13 +876,13 @@ (lambda (v0) (f (+ (* v 16) v0) (cons c ac)))] [else - (error 'tokenize "invalid sequence" + (die 'tokenize "invalid sequence" (list->string (cons c (reverse ac))))]))))] [else - (error 'tokenize + (die 'tokenize (format "invalid sequence \\x~a" c))]))] [else - (error 'tokenize + (die 'tokenize (format "invalid sequence \\~a" c))]))) (define tokenize/c (lambda (c p) @@ -942,7 +942,7 @@ (tokenize-dot p)] [($char= #\| c) (when (eq? (port-mode p) 'r6rs-mode) - (error 'tokenize "|symbol| syntax is invalid in #!r6rs mode")) + (die 'tokenize "|symbol| syntax is invalid in #!r6rs mode")) (let ([ls (reverse (tokenize-bar p '()))]) (cons 'datum (string->symbol (list->string ls))))] [($char= #\\ c) @@ -951,7 +951,7 @@ (list->string (reverse (tokenize-backslash '() p)))))] [else - (error 'tokenize "invalid syntax" c)]))) + (die 'tokenize "invalid syntax" c)]))) (define tokenize (lambda (p) @@ -966,7 +966,7 @@ (let ([c (read-char p)]) (cond [(eof-object? c) - (error 'tokenize "invalid eof after #")] + (die 'tokenize "invalid eof after #")] [($char= #\! c) (skip-comment p) (tokenize p)] @@ -979,21 +979,21 @@ (let ([t (tokenize p)]) (cond [(eof-object? t) - (error 'read "end of file encountered while reading list")] + (die 'read "end of file encountered while reading list")] [(eq? t end) (values '() locs k)] [(eq? t mis) - (error 'read "paren mismatch")] + (die 'read "paren mismatch")] [(eq? t 'dot) (let-values ([(d locs k) (read-expr p locs k)]) (let ([t (tokenize p)]) (cond [(eq? t end) (values d locs k)] [(eq? t mis) - (error 'read "paren mismatch")] + (die 'read "paren mismatch")] [(eq? t 'dot) - (error 'read "cannot have two dots in a list")] + (die 'read "cannot have two dots in a list")] [else - (error 'read + (die 'read (format "expecting ~a, got ~a" end t))])))] [(eq? t 'hash-semi) (let-values ([(ignored locs k) (read-expr p locs k)]) @@ -1011,12 +1011,12 @@ (let ([t (tokenize p)]) (cond [(eof-object? t) - (error 'read "end of file encountered while reading list")] + (die 'read "end of file encountered while reading list")] [(eq? t end) (values '() locs k)] [(eq? t mis) - (error 'read "paren mismatch")] + (die 'read "paren mismatch")] [(eq? t 'dot) - (error 'read "invalid dot while reading list")] + (die 'read "invalid dot while reading list")] [(eq? t 'hash-semi) (let-values ([(ignored locs k) (read-expr p locs k)]) (read-list-init p locs k end mis))] @@ -1061,25 +1061,25 @@ (cond [(fixnum? a) (unless (and (fx<= 0 a) (fx<= a 255)) - (error 'read + (die 'read (format "invalid value ~s in a bytevector" a))) ($bytevector-set! v i a) (bytevector-put v k ($fxsub1 i) ($cdr ls))] - [else (error 'read "invalid value inside a bytevector" a)]))]))) + [else (die 'read "invalid value inside a bytevector" a)]))]))) (define read-vector (lambda (p locs k count ls) (let ([t (tokenize p)]) (cond [(eof-object? t) - (error 'read "end of file encountered while reading a vector")] + (die 'read "end of file encountered while reading a vector")] [(eq? t 'rparen) (let ([v (make-vector count)]) (let ([k (vector-put v k (fxsub1 count) ls)]) (values v locs k)))] [(eq? t 'rbrack) - (error 'read "unexpected ] while reading a vector")] + (die 'read "unexpected ] while reading a vector")] [(eq? t 'dot) - (error 'read "unexpected . while reading a vector")] + (die 'read "unexpected . while reading a vector")] [(eq? t 'hash-semi) (let-values ([(ignored locs k) (read-expr p locs k)]) (read-vector p locs k count ls))] @@ -1091,15 +1091,15 @@ (let ([t (tokenize p)]) (cond [(eof-object? t) - (error 'read "end of file encountered while reading a bytevector")] + (die 'read "end of file encountered while reading a bytevector")] [(eq? t 'rparen) (let ([v ($make-bytevector count)]) (let ([k (bytevector-put v k (fxsub1 count) ls)]) (values v locs k)))] [(eq? t 'rbrack) - (error 'read "unexpected ] while reading a bytevector")] + (die 'read "unexpected ] while reading a bytevector")] [(eq? t 'dot) - (error 'read "unexpected . while reading a bytevector")] + (die 'read "unexpected . while reading a bytevector")] [(eq? t 'hash-semi) (let-values ([(ignored locs k) (read-expr p locs k)]) (read-bytevector p locs k count ls))] @@ -1124,7 +1124,7 @@ [(eq? (car t) 'macro) (let-values ([(expr locs k) (read-expr p locs k)]) (when (eof-object? expr) - (error 'read + (die 'read (format "invalid eof after ~a read macro" (cdr t)))) (let ([x (list expr)]) @@ -1142,7 +1142,7 @@ (lambda (x) (let ([loc (cdr x)]) (when (loc-set? loc) - (error 'read "duplicate mark" n)) + (die 'read "duplicate mark" n)) (set-loc-value! loc expr) (set-loc-set?! loc #t) (values expr locs k)))] @@ -1160,9 +1160,9 @@ (let ([loc (make-loc #f #f)]) (let ([locs (cons (cons n loc) locs)]) (values loc locs k)))]))] - [else (error 'read "invalid token" t)])] + [else (die 'read "invalid token" t)])] [else - (error 'read + (die 'read (format "unexpected ~s found" t))]))) (define read-expr @@ -1177,7 +1177,7 @@ (lambda (x) (let ([loc (cdr x)]) (unless (loc-set? loc) - (error 'read "referenced mark is not set" (car x))) + (die 'read "referenced mark is not set" (car x))) (when (loc? (loc-value loc)) (let f ([h loc] [t loc]) (if (loc? h) @@ -1185,7 +1185,7 @@ (if (loc? h1) (begin (when (eq? h1 t) - (error 'read "circular marks")) + (die 'read "circular marks")) (let ([v (f (loc-value h1) (loc-value t))]) (set-loc-value! h1 v) (set-loc-value! h v) @@ -1225,7 +1225,7 @@ [(p) (if (input-port? p) (tokenize p) - (error 'read-token "not an input port" p))])) + (die 'read-token "not an input port" p))])) (define read (case-lambda @@ -1233,11 +1233,11 @@ [(p) (if (input-port? p) (my-read p) - (error 'read "not an input port" p))])) + (die 'read "not an input port" p))])) (define (get-datum p) (unless (input-port? p) - (error 'get-datum "not an input port")) + (die 'get-datum "not an input port")) (my-read p)) (define comment-handler @@ -1245,7 +1245,7 @@ (lambda (x) (void)) (lambda (x) (unless (procedure? x) - (error 'comment-handler "not a procedure" x)) + (die 'comment-handler "not a procedure" x)) x))) ) diff --git a/scheme/ikarus.records.procedural.ss b/scheme/ikarus.records.procedural.ss index 3aeb822..c66b824 100644 --- a/scheme/ikarus.records.procedural.ss +++ b/scheme/ikarus.records.procedural.ss @@ -59,39 +59,39 @@ (if (rtd? rtd) (if (not (rtd-opaque? rtd)) rtd - (error 'record-rtd "record is opaque")) - (error 'record-rtd "not a record" x))) - (error 'record-rtd "not a record" x))) + (die 'record-rtd "record is opaque")) + (die 'record-rtd "not a record" x))) + (die 'record-rtd "not a record" x))) (define (record-type-name x) (if (rtd? x) (rtd-name x) - (error 'record-type-name "not an rtd" x))) + (die 'record-type-name "not an rtd" x))) (define (record-type-parent x) (if (rtd? x) (rtd-parent x) - (error 'record-type-parent "not an rtd" x))) + (die 'record-type-parent "not an rtd" x))) (define (record-type-uid x) (if (rtd? x) (rtd-uid x) - (error 'record-type-uid "not an rtd" x))) + (die 'record-type-uid "not an rtd" x))) (define (record-type-sealed? x) (if (rtd? x) (rtd-sealed? x) - (error 'record-type-sealed? "not an rtd" x))) + (die 'record-type-sealed? "not an rtd" x))) (define (record-type-opaque? x) (if (rtd? x) (rtd-opaque? x) - (error 'record-type-opaque? "not an rtd" x))) + (die 'record-type-opaque? "not an rtd" x))) (define (record-type-generative? x) (if (rtd? x) (not (rtd-sealed? x)) - (error 'record-type-generative? "not an rtd" x))) + (die 'record-type-generative? "not an rtd" x))) (define (record-type-field-names x) (if (rtd? x) @@ -103,7 +103,7 @@ (begin (vector-set! x i (cdr (vector-ref v i))) (f x v n (fxadd1 i))))))) - (error 'record-type-field-names "not an rtd" x))) + (die 'record-type-field-names "not an rtd" x))) (module (make-record-type-descriptor) @@ -114,7 +114,7 @@ #f #f #f parent sealed? opaque? uid fields)) (define (convert-fields sv) (unless (vector? sv) - (error who "invalid fields argument" sv)) + (die who "invalid fields argument" sv)) (let ([n2 (vector-length sv)]) (let ([v (make-vector n2)]) (let f ([i 0]) @@ -125,16 +125,16 @@ (if (pair? x) (let ([name (car x)]) (unless (and (null? (cdr x)) (symbol? name)) - (error who "invalid fields argument" sv)) + (die who "invalid fields argument" sv)) (vector-set! v i (cons (case m/u [(mutable) #t] [(immutable) #f] [else - (error who "invalid fields argument" sv)]) + (die who "invalid fields argument" sv)]) name))) - (error who "invalid fields argument" sv))) - (error who "invalid fields argument" sv))) + (die who "invalid fields argument" sv))) + (die who "invalid fields argument" sv))) (f (add1 i)))) v))) (define generate-rtd @@ -142,7 +142,7 @@ (cond [(rtd? parent) (when (rtd-sealed? parent) - (error who "cannot extend sealed parent" parent)) + (die who "cannot extend sealed parent" parent)) (make-rtd-aux name parent uid sealed? (or opaque? (rtd-opaque? parent)) (rtd-size parent) @@ -150,7 +150,7 @@ [(eqv? parent #f) (make-rtd-aux name parent uid sealed? opaque? 0 (convert-fields fields))] - [else (error who "not a valid parent" parent)]))) + [else (die who "not a valid parent" parent)]))) (define (same-fields-as-rtd? fields rtd) (let* ([fv (rtd-fields rtd)] [n (vector-length fv)]) @@ -183,7 +183,7 @@ (eqv? sealed? (rtd-sealed? rtd)) (eqv? opaque? (rtd-opaque? rtd)) (same-fields-as-rtd? fields rtd)) - (error who "invalid arguments")) + (die who "invalid arguments")) rtd)] [else (let ([rtd (generate-rtd name parent uid sealed? opaque? fields)]) @@ -192,17 +192,17 @@ (define make-record-type-descriptor (lambda (name parent uid sealed? opaque? fields) (unless (symbol? name) - (error who "not a valid record type name" name)) + (die who "not a valid record type name" name)) (unless (boolean? sealed?) - (error who "not a valid sealed? argument" sealed?)) + (die who "not a valid sealed? argument" sealed?)) (unless (boolean? opaque?) - (error who "not a valid opaque? argument" opaque?)) + (die who "not a valid opaque? argument" opaque?)) (cond [(symbol? uid) (make-nongenerative-rtd name parent uid sealed? opaque? fields)] [(eqv? uid #f) (generate-rtd name parent uid sealed? opaque? fields)] - [else (error who "not a valid uid" uid)])))) + [else (die who "not a valid uid" uid)])))) (define-struct rcd (rtd prcd proc)) @@ -215,9 +215,9 @@ (define (rtd-subtype? rtd parent-rtd) (unless (rtd? rtd) - (error 'rtd-subtype? "not an rtd" rtd)) + (die 'rtd-subtype? "not an rtd" rtd)) (unless (rtd? parent-rtd) - (error 'rtd-substype? "not an rtd" parent-rtd)) + (die 'rtd-substype? "not an rtd" parent-rtd)) (or (eq? rtd parent-rtd) (is-parent-of? parent-rtd rtd))) @@ -225,20 +225,20 @@ (lambda (rtd prcd protocol) (define who 'make-record-constructor-descriptor) (unless (rtd? rtd) - (error who "not a record type descriptor" rtd)) + (die who "not a record type descriptor" rtd)) (unless (or (not protocol) (procedure? protocol)) - (error who "invalid protocol" protocol)) + (die who "invalid protocol" protocol)) (let ([prtd (rtd-parent rtd)]) (cond [(not prcd) (make-rcd rtd #f protocol)] [(rcd? prcd) (unless (is-parent-of? (rcd-rtd prcd) rtd) - (error who "descriptor does not apply" + (die who "descriptor does not apply" prcd rtd)) (make-rcd rtd prcd protocol)] [else - (error who "not a valid record constructor descriptor" prcd)])))) + (die who "not a valid record constructor descriptor" prcd)])))) (define (record-constructor rcd) (define who 'record-constructor) @@ -250,7 +250,7 @@ (if (pair? ls) (let-values ([(m p) (f (cdr ls) (- n 1))]) (values (cons (car ls) m) p)) - (error 'record-condtructor "insufficient arguments" + (die 'record-condtructor "insufficient arguments" all-fields))))) (define (constructor main-rtd size prcd proto) @@ -260,7 +260,7 @@ (lambda flds (let ([n (rtd-size main-rtd)]) (unless (= (length flds) size) - (apply error + (apply die 'a-record-constructor (format "expected ~a args, got ~a instead" @@ -301,7 +301,7 @@ (lambda fmls (lambda flds (unless (= (length flds) n) - (apply error + (apply die 'a-record-constructor (format "expected ~a args, got ~a instead" @@ -309,7 +309,7 @@ flds)) (apply (p (cons flds f*)) fmls))))))))) (unless (rcd? rcd) - (error who "not a record constructor descriptor" rcd)) + (die who "not a record constructor descriptor" rcd)) (let ([rtd (rcd-rtd rcd)] [prcd (rcd-prcd rcd)] [proto (rcd-proc rcd)]) @@ -319,14 +319,14 @@ (define (record-accessor rtd k) (define who 'record-accessor) (unless (rtd? rtd) - (error who "not an rtd" rtd)) + (die who "not an rtd" rtd)) (unless (and (fixnum? k) (fx>= k 0)) - (error who "not a valid index" k)) + (die who "not a valid index" k)) (let ([sz (rtd-size rtd)] [p (rtd-parent rtd)]) (let ([i (if p (+ k (rtd-size p)) k)]) (unless (fx< i sz) - (error who "not a valid index" k)) + (die who "not a valid index" k)) (let ([a-record-accessor (lambda (x) (cond @@ -334,29 +334,29 @@ [($struct? x) (let ([xrtd ($struct-rtd x)]) (unless (rtd? xrtd) - (error who "invalid type" x rtd)) + (die who "invalid type" x rtd)) (let f ([prtd (rtd-parent xrtd)] [rtd rtd] [x x] [i i]) (cond [(eq? prtd rtd) ($struct-ref x i)] [(not prtd) - (error who "invalid type" x rtd)] + (die who "invalid type" x rtd)] [else (f (rtd-parent prtd) rtd x i)])))] - [else (error who "invalid type" x rtd)]))]) + [else (die who "invalid type" x rtd)]))]) a-record-accessor)))) (define (record-mutator rtd k) (define who 'record-mutator) (unless (rtd? rtd) - (error who "not an rtd" rtd)) + (die who "not an rtd" rtd)) (unless (and (fixnum? k) (fx>= k 0)) - (error who "not a valid index" k)) + (die who "not a valid index" k)) (let ([sz (rtd-size rtd)] [p (rtd-parent rtd)]) (let ([i (if p (+ k (rtd-size p)) k)]) (unless (fx< i sz) - (error who "not a valid index" k)) + (die who "not a valid index" k)) (unless (car (vector-ref (rtd-fields rtd) k)) - (error who "field is not mutable" k rtd)) + (die who "field is not mutable" k rtd)) (let ([a-record-mutator (lambda (x v) (cond @@ -364,20 +364,20 @@ [($struct? x) (let ([xrtd ($struct-rtd x)]) (unless (rtd? xrtd) - (error who "invalid type" x rtd)) + (die who "invalid type" x rtd)) (let f ([prtd (rtd-parent xrtd)] [rtd rtd] [x x] [i i] [v v]) (cond [(eq? prtd rtd) ($struct-set! x i v)] [(not prtd) - (error who "invalid type" x rtd)] + (die who "invalid type" x rtd)] [else (f (rtd-parent prtd) rtd x i v)])))] - [else (error who "invalid type" x rtd)]))]) + [else (die who "invalid type" x rtd)]))]) a-record-mutator)))) (define (record-predicate rtd) (define who 'record-predicate) (unless (rtd? rtd) - (error who "not an rtd" rtd)) + (die who "not an rtd" rtd)) (let ([sz (rtd-size rtd)] [p (rtd-parent rtd)]) (let ([a-record-predicate @@ -399,14 +399,14 @@ (define (record-field-mutable? rtd k) (define who 'record-field-mutable?) (unless (rtd? rtd) - (error who "not an rtd" rtd)) + (die who "not an rtd" rtd)) (unless (and (fixnum? k) (fx>= k 0)) - (error who "not a valid index" k)) + (die who "not a valid index" k)) (let ([sz (rtd-size rtd)] [p (rtd-parent rtd)]) (let ([i (if p (+ k (rtd-size p)) k)]) (unless (fx< i sz) - (error who "not a valid index" k)) + (die who "not a valid index" k)) (car (vector-ref (rtd-fields rtd) k))))) (set-rtd-printer! (type-descriptor rtd) diff --git a/scheme/ikarus.sort.ss b/scheme/ikarus.sort.ss index 0535442..d225dd2 100644 --- a/scheme/ikarus.sort.ss +++ b/scheme/ikarus.sort.ss @@ -77,7 +77,7 @@ (define (list-sort vector (sort-tail list v) (vector-length v)))) @@ -95,9 +95,9 @@ (import (ikarus system $vectors)) (import (ikarus system $pairs)) (unless (procedure? list v) (vector-length v))]) (unless (null? ls) diff --git a/scheme/ikarus.strings.ss b/scheme/ikarus.strings.ss index 6ad883d..8c2738f 100644 --- a/scheme/ikarus.strings.ss +++ b/scheme/ikarus.strings.ss @@ -36,35 +36,35 @@ (define string-length (lambda (x) (unless (string? x) - (error 'string-length "not a string" x)) + (die 'string-length "not a string" x)) ($string-length x))) (define (string-ref s i) (unless (string? s) - (error 'string-ref "not a string" s)) + (die 'string-ref "not a string" s)) (unless (fixnum? i) - (error 'string-ref "not a valid index" i)) + (die 'string-ref "not a valid index" i)) (unless (and ($fx< i ($string-length s)) ($fx<= 0 i)) - (error 'string-ref "index is out of range" i s)) + (die 'string-ref "index is out of range" i s)) (let ([c ($string-ref s i)]) (unless (char? c) - (error 'string-ref "BUG: got a non-char")) + (die 'string-ref "BUG: got a non-char")) c)) (define string-set! (lambda (s i c) (unless (string? s) - (error 'string-set! "not a string" s)) + (die 'string-set! "not a string" s)) (unless (fixnum? i) - (error 'string-set! "not a valid index" i)) + (die 'string-set! "not a valid index" i)) (unless (and ($fx< i ($string-length s)) ($fx>= i 0)) - (error 'string-set! "index is out of range" i s)) + (die 'string-set! "index is out of range" i s)) (unless (char? c) - (error 'string-set! "not a character" c)) + (die 'string-set! "not a character" c)) ($string-set! s i c))) (define make-string @@ -80,13 +80,13 @@ (case-lambda [(n) (unless (and (fixnum? n) (fx>= n 0)) - (error 'make-string "not a valid length" n)) + (die 'make-string "not a valid length" n)) (fill! ($make-string n) 0 n (integer->char 0))] [(n c) (unless (and (fixnum? n) (fx>= n 0)) - (error 'make-string "not a valid length" n)) + (die 'make-string "not a valid length" n)) (unless (char? c) - (error 'make-string "not a character" c)) + (die 'make-string "not a character" c)) (fill! ($make-string n) 0 n c)])) make-string)) @@ -98,7 +98,7 @@ (cond [(null? ls) n] [(char? ($car ls)) (length ($cdr ls) ($fx+ n 1))] - [else (error 'string "not a character" ($car ls))]))] + [else (die 'string "not a character" ($car ls))]))] [loop (lambda (s ls i n) (cond @@ -122,18 +122,18 @@ (define substring (lambda (s n m) (unless (string? s) - (error 'substring "not a string" s)) + (die 'substring "not a string" s)) (let ([len ($string-length s)]) (unless (and (fixnum? n) ($fx>= n 0) ($fx<= n len)) - (error 'substring "not a valid start index" n s)) + (die 'substring "not a valid start index" n s)) (unless (and (fixnum? m) ($fx>= m 0) ($fx<= m len)) - (error 'substring "not a valid end index" m s)) + (die 'substring "not a valid end index" m s)) (unless ($fx<= n m) - (error 'substring "indices are in decreasing order" n m)) + (die 'substring "indices are in decreasing order" n m)) (let ([len ($fx- m n)]) (if ($fx> len 0) (fill s ($make-string len) n m 0) @@ -143,7 +143,7 @@ (lambda (s) (if (string? s) (substring s 0 (string-length s)) - (error 'string-copy "not a string" s)))) + (die 'string-copy "not a string" s)))) (module (string=?) (define bstring=? @@ -163,13 +163,13 @@ (or (null? s*) (let ([a ($car s*)]) (unless (string? a) - (error 'string=? "not a string" a)) + (die 'string=? "not a string" a)) (if ($fx= n ($string-length a)) (and (strings=? s ($cdr s*) n) (bstring=? s a 0 n)) (check-strings-and-return-false ($cdr s*))))))) (define (err x) - (error 'string=? "not a string" x)) + (die 'string=? "not a string" x)) (define string=? (case-lambda [(s s1) @@ -203,10 +203,10 @@ [(string? (car s*)) (f (cdr s*))] [else - (error who "not a string" + (die who "not a string" (car s*))])))) - (error who "not a string" s2))]))) - (error who "not a string" s1))) + (die who "not a string" s2))]))) + (die who "not a string" s1))) (define ($string? s1 s2) - (error 'string>? "not a string" s2)) - (error 'string>? "not a string" s2))] + (die 'string>? "not a string" s2)) + (die 'string>? "not a string" s2))] [(s . s*) (string-cmp 'string>? $string>? s s*)])) @@ -303,15 +303,15 @@ (if (string? s1) (if (string? s2) ($string>=? s1 s2) - (error 'string>=? "not a string" s2)) - (error 'string>=? "not a string" s2))] + (die 'string>=? "not a string" s2)) + (die 'string>=? "not a string" s2))] [(s . s*) (string-cmp 'string>=? $string>=? s s*)])) (define string->list (lambda (x) (unless (string? x) - (error 'string->list "not a string" x)) + (die 'string->list "not a string" x)) (let f ([x x] [i ($string-length x)] [ac '()]) (cond [($fxzero? i) ac] @@ -328,13 +328,13 @@ (if (pair? h) (if (not (eq? h t)) (race ($cdr h) ($cdr t) ls ($fx+ n 2)) - (error 'reverse "circular list" ls)) + (die 'reverse "circular list" ls)) (if (null? h) ($fx+ n 1) - (error 'reverse "not a proper list" ls)))) + (die 'reverse "not a proper list" ls)))) (if (null? h) n - (error 'reverse "not a proper list" ls))))] + (die 'reverse "not a proper list" ls))))] [fill (lambda (s i ls) (cond @@ -342,7 +342,7 @@ [else (let ([c ($car ls)]) (unless (char? c) - (error 'list->string "not a character" c)) + (die 'list->string "not a character" c)) ($string-set! s i c) (fill s ($fxadd1 i) (cdr ls)))]))]) (lambda (ls) @@ -359,7 +359,7 @@ [else (let ([a ($car s*)]) (unless (string? a) - (error 'string-append "not a string" a)) + (die 'string-append "not a string" a)) (length* ($cdr s*) ($fx+ n ($string-length a))))]))) (define fill-string (lambda (s a si sj ai) @@ -389,9 +389,9 @@ (case-lambda [(p v) (unless (procedure? p) - (error who "not a procedure" p)) + (die who "not a procedure" p)) (unless (string? v) - (error who "not a string" v)) + (die who "not a string" v)) (let f ([p p] [v v] [i 0] [n (string-length v)]) (cond [($fx= i n) (void)] @@ -400,14 +400,14 @@ (f p v ($fxadd1 i) n)]))] [(p v0 v1) (unless (procedure? p) - (error who "not a procedure" p)) + (die who "not a procedure" p)) (unless (string? v0) - (error who "not a string" v0)) + (die who "not a string" v0)) (unless (string? v1) - (error who "not a string" v1)) + (die who "not a string" v1)) (let ([n (string-length v0)]) (unless ($fx= n ($string-length v1)) - (error who "length mismatch" v0 v1)) + (die who "length mismatch" v0 v1)) (let f ([p p] [v0 v0] [v1 v1] [i 0] [n n]) (cond [($fx= i n) (void)] @@ -416,21 +416,21 @@ (f p v0 v1 ($fxadd1 i) n)])))] [(p v0 v1 . v*) (unless (procedure? p) - (error who "not a procedure" p)) + (die who "not a procedure" p)) (unless (string? v0) - (error who "not a string" v0)) + (die who "not a string" v0)) (unless (string? v1) - (error who "not a string" v1)) + (die who "not a string" v1)) (let ([n (string-length v0)]) (unless ($fx= n ($string-length v1)) - (error who "length mismatch" v0 v1)) + (die who "length mismatch" v0 v1)) (let f ([v* v*] [n n]) (unless (null? v*) (let ([a ($car v*)]) (unless (string? a) - (error who "not a string" a)) + (die who "not a string" a)) (unless ($fx= ($string-length a) n) - (error who "length mismatch"))) + (die who "length mismatch"))) (f ($cdr v*) n))) (let f ([p p] [v0 v0] [v1 v1] [v* v*] [i 0] [n n]) (cond @@ -446,9 +446,9 @@ (define (string-fill! v fill) (unless (string? v) - (error 'string-fill! "not a vector" v)) + (die 'string-fill! "not a vector" v)) (unless (char? fill) - (error 'string-fill! "not a character" fill)) + (die 'string-fill! "not a character" fill)) (let f ([v v] [i 0] [n ($string-length v)] [fill fill]) (unless ($fx= i n) ($string-set! v i fill) @@ -459,21 +459,21 @@ (lambda (src src-start dst dst-start k) (cond [(or (not (fixnum? src-start)) ($fx< src-start 0)) - (error 'string-copy! "not a valid starting index" src-start)] + (die 'string-copy! "not a valid starting index" src-start)] [(or (not (fixnum? dst-start)) ($fx< dst-start 0)) - (error 'string-copy! "not a valid starting index" dst-start)] + (die 'string-copy! "not a valid starting index" dst-start)] [(or (not (fixnum? k)) ($fx< k 0)) - (error 'string-copy! "not a valid length" k)] + (die 'string-copy! "not a valid length" k)] [(not (string? src)) - (error 'string-copy! "not a string" src)] + (die 'string-copy! "not a string" src)] [(not (string? dst)) - (error 'string-copy! "not a string" dst)] + (die 'string-copy! "not a string" dst)] [(let ([n ($fx+ src-start k)]) (or ($fx< n 0) ($fx> n ($string-length src)))) - (error 'string-copy! "out of range" src-start k)] + (die 'string-copy! "out of range" src-start k)] [(let ([n ($fx+ dst-start k)]) (or ($fx< n 0) ($fx> n ($string-length dst)))) - (error 'string-copy! "out of range" dst-start k)] + (die 'string-copy! "out of range" dst-start k)] [(eq? src dst) (cond [($fx< dst-start src-start) @@ -499,5 +499,5 @@ (let ([s ($make-bytevector 16)]) (utf8->string (or (foreign-call "ik_uuid" s) - (error 'uuid "failed!")))))) + (die 'uuid "failed!")))))) ) diff --git a/scheme/ikarus.structs.ss b/scheme/ikarus.structs.ss index 50ab1b7..44d620d 100644 --- a/scheme/ikarus.structs.ss +++ b/scheme/ikarus.structs.ss @@ -89,7 +89,7 @@ (define verify-field (lambda (x) (unless (symbol? x) - (error 'make-struct-type "not a valid field name" x)))) + (die 'make-struct-type "not a valid field name" x)))) (define set-fields (lambda (r f* i n) @@ -110,9 +110,9 @@ (case-lambda [(name fields) (unless (string? name) - (error 'make-struct-type "name must be a string" name)) + (die 'make-struct-type "name must be a string" name)) (unless (list? fields) - (error 'make-struct-type "fields must be a list" fields)) + (die 'make-struct-type "fields must be a list" fields)) (for-each verify-field fields) (let ([g (gensym name)]) (let ([rtd (make-rtd name fields #f g)]) @@ -120,16 +120,16 @@ rtd))] [(name fields g) (unless (string? name) - (error 'make-struct-type "name must be a string" name)) + (die 'make-struct-type "name must be a string" name)) (unless (list? fields) - (error 'make-struct-type "fields must be a list" fields)) + (die 'make-struct-type "fields must be a list" fields)) (for-each verify-field fields) (cond [(symbol-bound? g) (let ([rtd (symbol-value g)]) (unless (and (string=? name (struct-type-name rtd)) (equal? fields (struct-type-field-names rtd))) - (error 'make-struct-type "definition mismatch")) + (die 'make-struct-type "definition mismatch")) rtd)] [else (let ([rtd (make-rtd name fields #f g)]) @@ -139,38 +139,38 @@ (define struct-type-name (lambda (rtd) (unless (rtd? rtd) - (error 'struct-type-name "not an rtd" rtd)) + (die 'struct-type-name "not an rtd" rtd)) (rtd-name rtd))) (define struct-type-symbol (lambda (rtd) (unless (rtd? rtd) - (error 'struct-type-symbol "not an rtd" rtd)) + (die 'struct-type-symbol "not an rtd" rtd)) (rtd-symbol rtd))) (define struct-type-field-names (lambda (rtd) (unless (rtd? rtd) - (error 'struct-type-field-names "not an rtd" rtd)) + (die 'struct-type-field-names "not an rtd" rtd)) (rtd-fields rtd))) (define struct-constructor (lambda (rtd) (unless (rtd? rtd) - (error 'struct-constructor "not an rtd")) + (die 'struct-constructor "not an rtd")) (lambda args (let ([n (rtd-length rtd)]) (let ([r ($make-struct rtd n)]) (or (set-fields r args 0 n) - (error 'struct-constructor + (die 'struct-constructor "incorrect number of arguments to the constructor" rtd))))))) (define struct-predicate (lambda (rtd) (unless (rtd? rtd) - (error 'struct-predicate "not an rtd")) + (die 'struct-predicate "not an rtd")) (lambda (x) (and ($struct? x) (eq? ($struct-rtd x) rtd))))) @@ -180,39 +180,39 @@ (cond [(fixnum? i) (unless (and ($fx>= i 0) ($fx< i (rtd-length rtd))) - (error who "out of range for rtd" i rtd)) + (die who "out of range for rtd" i rtd)) i] [(symbol? i) (letrec ([lookup (lambda (n ls) (cond [(null? ls) - (error who "not a field" rtd)] + (die who "not a field" rtd)] [(eq? i ($car ls)) n] [else (lookup ($fx+ n 1) ($cdr ls))]))]) (lookup 0 (rtd-fields rtd)))] - [else (error who "not a valid index" i)]))) + [else (die who "not a valid index" i)]))) (define struct-field-accessor (lambda (rtd i) (unless (rtd? rtd) - (error 'struct-field-accessor "not an rtd" rtd)) + (die 'struct-field-accessor "not an rtd" rtd)) (let ([i (field-index i rtd 'struct-field-accessor)]) (lambda (x) (unless (and ($struct? x) (eq? ($struct-rtd x) rtd)) - (error 'struct-field-accessor "not of correct type" x rtd)) + (die 'struct-field-accessor "not of correct type" x rtd)) ($struct-ref x i))))) (define struct-field-mutator (lambda (rtd i) (unless (rtd? rtd) - (error 'struct-field-mutator "not an rtd" rtd)) + (die 'struct-field-mutator "not an rtd" rtd)) (let ([i (field-index i rtd 'struct-field-mutator)]) (lambda (x v) (unless (and ($struct? x) (eq? ($struct-rtd x) rtd)) - (error 'struct-field-mutator "not of correct type" x rtd)) + (die 'struct-field-mutator "not of correct type" x rtd)) ($struct-set! x i v))))) (define struct? @@ -221,9 +221,9 @@ ($struct? x) (let ([rtd ($car rest)]) (unless (null? ($cdr rest)) - (error 'struct? "too many arguments")) + (die 'struct? "too many arguments")) (unless (rtd? rtd) - (error 'struct? "not an rtd")) + (die 'struct? "not an rtd")) (and ($struct? x) (eq? ($struct-rtd x) rtd)))))) @@ -231,49 +231,49 @@ (lambda (x) (if ($struct? x) ($struct-rtd x) - (error 'struct-rtd "not a struct" x)))) + (die 'struct-rtd "not a struct" x)))) (define struct-length (lambda (x) (if ($struct? x) (rtd-length ($struct-rtd x)) - (error 'struct-length "not a struct" x)))) + (die 'struct-length "not a struct" x)))) (define struct-name (lambda (x) (if ($struct? x) (rtd-name ($struct-rtd x)) - (error 'struct-name "not a struct" x)))) + (die 'struct-name "not a struct" x)))) (define struct-printer (lambda (x) (if ($struct? x) (rtd-printer ($struct-rtd x)) - (error 'struct-printer "not a struct" x)))) + (die 'struct-printer "not a struct" x)))) (define struct-ref (lambda (x i) - (unless ($struct? x) (error 'struct-ref "not a struct" x)) - (unless (fixnum? i) (error 'struct-ref "not a valid index" i)) + (unless ($struct? x) (die 'struct-ref "not a struct" x)) + (unless (fixnum? i) (die 'struct-ref "not a valid index" i)) (let ([n (rtd-length ($struct-rtd x))]) (unless (and ($fx>= i 0) ($fx< i n)) - (error 'struct-ref "index is out of range" i x)) + (die 'struct-ref "index is out of range" i x)) ($struct-ref x i)))) (define struct-set! (lambda (x i v) - (unless ($struct? x) (error 'struct-set! "not a struct" x)) - (unless (fixnum? i) (error 'struct-set! "not a valid index" i)) + (unless ($struct? x) (die 'struct-set! "not a struct" x)) + (unless (fixnum? i) (die 'struct-set! "not a valid index" i)) (let ([n (rtd-length ($struct-rtd x))]) (unless (and ($fx>= i 0) ($fx< i n)) - (error 'struct-set! "index is out of range" i x)) + (die 'struct-set! "index is out of range" i x)) ($struct-set! x i v)))) (define (set-rtd-printer! x p) (unless (rtd? x) - (error 'set-rtd-printer! "not an rtd" x)) + (die 'set-rtd-printer! "not an rtd" x)) (unless (procedure? p) - (error 'set-rtd-printer! "not a procedure" p)) + (die 'set-rtd-printer! "not a procedure" p)) ($set-rtd-printer! x p)) (set-rtd-fields! (base-rtd) '(name fields length printer symbol)) @@ -281,7 +281,7 @@ ($set-rtd-printer! (base-rtd) (lambda (x p) (unless (rtd? x) - (error 'struct-type-printer "not an rtd")) + (die 'struct-type-printer "not an rtd")) (display "#<" p) (display (rtd-name x) p) (display " rtd>" p))) diff --git a/scheme/ikarus.symbols.ss b/scheme/ikarus.symbols.ss index 1726ac6..82d3cd0 100644 --- a/scheme/ikarus.symbols.ss +++ b/scheme/ikarus.symbols.ss @@ -40,7 +40,7 @@ ($make-symbol s) (if (symbol? s) ($make-symbol ($symbol-string s)) - (error 'gensym "neither a string nor a symbol" s)))])) + (die 'gensym "neither a string nor a symbol" s)))])) (define gensym? (lambda (x) @@ -51,10 +51,10 @@ (define top-level-value (lambda (x) (unless (symbol? x) - (error 'top-level-value "not a symbol" x)) + (die 'top-level-value "not a symbol" x)) (let ([v ($symbol-value x)]) (when ($unbound-object? v) - (error 'eval "unbound variable" + (die 'eval "unbound variable" (string->symbol (symbol->string x)))) v))) @@ -62,39 +62,39 @@ (define top-level-bound? (lambda (x) (unless (symbol? x) - (error 'top-level-bound? "not a symbol" x)) + (die 'top-level-bound? "not a symbol" x)) (not ($unbound-object? ($symbol-value x))))) (define set-top-level-value! (lambda (x v) (unless (symbol? x) - (error 'set-top-level-value! "not a symbol" x)) + (die 'set-top-level-value! "not a symbol" x)) ($set-symbol-value! x v))) (define symbol-value (lambda (x) (unless (symbol? x) - (error 'symbol-value "not a symbol" x)) + (die 'symbol-value "not a symbol" x)) (let ([v ($symbol-value x)]) (when ($unbound-object? v) - (error 'symbol-value "unbound" x)) + (die 'symbol-value "unbound" x)) v))) (define symbol-bound? (lambda (x) (unless (symbol? x) - (error 'symbol-bound? "not a symbol" x)) + (die 'symbol-bound? "not a symbol" x)) (not ($unbound-object? ($symbol-value x))))) (define set-symbol-value! (lambda (x v) (unless (symbol? x) - (error 'set-symbol-value! "not a symbol" x)) + (die 'set-symbol-value! "not a symbol" x)) ($set-symbol-value! x v) ($set-symbol-proc! x (if (procedure? v) v (lambda args - (error 'apply "not a procedure" + (die 'apply "not a procedure" ($symbol-value x))))))) (define reset-symbol-proc! @@ -106,21 +106,21 @@ (lambda args (let ([v ($symbol-value x)]) (if ($unbound-object? v) - (error 'eval "unbound variable" + (die 'eval "unbound variable" (string->symbol (symbol->string x))) - (error 'apply "not a procedure" v))))))))) + (die 'apply "not a procedure" v))))))))) (define string->symbol (lambda (x) (unless (string? x) - (error 'string->symbol "not a string" x)) + (die 'string->symbol "not a string" x)) (foreign-call "ikrt_string_to_symbol" x))) (define symbol->string (lambda (x) (unless (symbol? x) - (error 'symbol->string "not a symbol" x)) + (die 'symbol->string "not a symbol" x)) (let ([str ($symbol-string x)]) (or str (let ([ct (gensym-count)]) @@ -132,8 +132,8 @@ (define putprop (lambda (x k v) - (unless (symbol? x) (error 'putprop "not a symbol" x)) - (unless (symbol? k) (error 'putprop "not a symbol" k)) + (unless (symbol? x) (die 'putprop "not a symbol" x)) + (unless (symbol? k) (die 'putprop "not a symbol" k)) (let ([p ($symbol-plist x)]) (cond [(assq k p) => (lambda (x) (set-cdr! x v))] @@ -142,8 +142,8 @@ (define getprop (lambda (x k) - (unless (symbol? x) (error 'getprop "not a symbol" x)) - (unless (symbol? k) (error 'getprop "not a symbol" k)) + (unless (symbol? x) (die 'getprop "not a symbol" x)) + (unless (symbol? k) (die 'getprop "not a symbol" k)) (let ([p ($symbol-plist x)]) (cond [(assq k p) => cdr] @@ -151,8 +151,8 @@ (define remprop (lambda (x k) - (unless (symbol? x) (error 'remprop "not a symbol" x)) - (unless (symbol? k) (error 'remprop "not a symbol" k)) + (unless (symbol? x) (die 'remprop "not a symbol" x)) + (unless (symbol? k) (die 'remprop "not a symbol" k)) (let ([p ($symbol-plist x)]) (unless (null? p) (let ([a ($car p)]) @@ -171,7 +171,7 @@ (define property-list (lambda (x) (unless (symbol? x) - (error 'property-list "not a symbol" x)) + (die 'property-list "not a symbol" x)) (letrec ([f (lambda (ls ac) (cond @@ -185,12 +185,12 @@ (define gensym->unique-string (lambda (x) (unless (symbol? x) - (error 'gensym->unique-string "not a gensym" x)) + (die 'gensym->unique-string "not a gensym" x)) (let ([us ($symbol-unique-string x)]) (cond [(string? us) us] [(not us) - (error 'gensym->unique-string "not a gensym" x)] + (die 'gensym->unique-string "not a gensym" x)] [else (let f ([x x]) (let ([id (uuid)]) @@ -204,7 +204,7 @@ "g" (lambda (x) (unless (string? x) - (error 'gensym-prefix "not a string" x)) + (die 'gensym-prefix "not a string" x)) x))) (define gensym-count @@ -212,7 +212,7 @@ 0 (lambda (x) (unless (and (fixnum? x) ($fx>= x 0)) - (error 'gensym-count "not a valid count" x)) + (die 'gensym-count "not a valid count" x)) x))) (define print-gensym @@ -220,7 +220,7 @@ #t (lambda (x) (unless (or (boolean? x) (eq? x 'pretty)) - (error 'print-gensym "not in #t|#f|pretty" x)) + (die 'print-gensym "not in #t|#f|pretty" x)) x))) ) diff --git a/scheme/ikarus.time-and-date.ss b/scheme/ikarus.time-and-date.ss index ed822a5..12be1c8 100644 --- a/scheme/ikarus.time-and-date.ss +++ b/scheme/ikarus.time-and-date.ss @@ -31,16 +31,16 @@ (if (time? x) (+ (* (time-msecs x) #e10e5) (time-secs x)) - (error 'time-second "not a time" x))) + (die 'time-second "not a time" x))) (define (time-nanosecond x) (if (time? x) (* (time-usecs x) 1000) - (error 'time-nanosecond "not a time" x))) + (die 'time-nanosecond "not a time" x))) (define (time-gmt-offset x) (if (time? x) (foreign-call "ikrt_gmt_offset" x) - (error 'time-gmt-offset "not a time" x))) + (die 'time-gmt-offset "not a time" x))) ) diff --git a/scheme/ikarus.timer.ss b/scheme/ikarus.timer.ss index 65464f8..788030c 100644 --- a/scheme/ikarus.timer.ss +++ b/scheme/ikarus.timer.ss @@ -86,7 +86,7 @@ (time-it #f proc)] [(message proc) (unless (procedure? proc) - (error 'time-it "not a procedure" proc)) + (die 'time-it "not a procedure" proc)) (let* ([t0 (mk-stats)] [t1 (mk-stats)] [bytes-min (bytes-minor)] diff --git a/scheme/ikarus.trace.ss b/scheme/ikarus.trace.ss index d7f19f0..8bdebbc 100644 --- a/scheme/ikarus.trace.ss +++ b/scheme/ikarus.trace.ss @@ -98,7 +98,7 @@ (let ([a (cdr pr)] [v (symbol-value s)]) (unless (eq? (cdr a) v) (unless (procedure? v) - (error 'trace + (die 'trace "the top-level value is not a procedure" s v)) (let ([p (make-traced-procedure s v)]) @@ -107,10 +107,10 @@ (set-symbol-value! s p)))))] [else (unless (symbol-bound? s) - (error 'trace "unbound" s)) + (die 'trace "unbound" s)) (let ([v (symbol-value s)]) (unless (procedure? v) - (error 'trace "the top-level value is not a procedure" s v)) + (die 'trace "the top-level value is not a procedure" s v)) (let ([p (make-traced-procedure s v)]) (set! traced-symbols (cons (cons s (cons v p)) traced-symbols)) diff --git a/scheme/ikarus.unicode-conversion.ss b/scheme/ikarus.unicode-conversion.ss index b0b5a6e..c065b0d 100644 --- a/scheme/ikarus.unicode-conversion.ss +++ b/scheme/ikarus.unicode-conversion.ss @@ -37,7 +37,7 @@ ;;; handling-modes: ignore, replace, raise ;;; ignore: skips over the offending bytes ;;; replace: places a U+FFFD in place of the malformed bytes - ;;; raise: raises an error + ;;; raise: raises an die ;;; It appears that utf-8 data can start with a #xEF #xBB #xBF BOM! @@ -102,14 +102,14 @@ ($fxlogor #b10000000 ($fxlogand b #b111111))) (f bv str ($fxadd1 i) ($fx+ j 4) n)])))]))) (unless (string? str) - (error 'string->utf8 "not a string" str)) + (die 'string->utf8 "not a string" str)) (fill-utf8-bytevector ($make-bytevector (utf8-string-size str)) str))) (define (utf8->string x) (unless (bytevector? x) - (error 'utf8->string "not a bytevector" x)) + (die 'utf8->string "not a bytevector" x)) (decode-utf8-bytevector x 'replace)) (define decode-utf8-bytevector @@ -142,12 +142,12 @@ [(eq? mode 'replace) (f x i j ($fxadd1 n) mode)] [else - (error who "invalid byte sequence at idx of bytevector" + (die who "invalid byte sequence at idx of bytevector" b0 b1 i bv)]))] [(eq? mode 'ignore) n] [(eq? mode 'replace) ($fxadd1 n)] [else - (error who "invalid byte near end of bytevector" b0)]))] + (die who "invalid byte near end of bytevector" b0)]))] [($fx= ($fxsra b0 4) #b1110) (cond [($fx< ($fx+ i 2) j) @@ -165,10 +165,10 @@ (f x ($fxadd1 i) j n mode)] [(eq? mode 'replace) (f x ($fxadd1 i) j ($fxadd1 n) mode)] - [else (error who "invalid sequence" b0 b1 b2)]))] + [else (die who "invalid sequence" b0 b1 b2)]))] [(eq? mode 'ignore) (f x ($fxadd1 i) j n mode)] [(eq? mode 'replace) (f x ($fxadd1 i) j ($fxadd1 n) mode)] - [else (error who "incomplete char sequence")])] + [else (die who "incomplete char sequence")])] [($fx= ($fxsra b0 3) #b11110) (cond [($fx< ($fx+ i 3) j) @@ -189,13 +189,13 @@ (f x ($fxadd1 i) j n mode)] [(eq? mode 'replace) (f x ($fxadd1 i) j ($fxadd1 n) mode)] - [else (error who "invalid sequence" b0 b1 b2 b3)]))] + [else (die who "invalid sequence" b0 b1 b2 b3)]))] [(eq? mode 'ignore) (f x ($fxadd1 i) j n mode)] [(eq? mode 'replace) (f x ($fxadd1 i) j ($fxadd1 n) mode)] - [else (error who "incomplete char sequence")])] + [else (die who "incomplete char sequence")])] [(eq? mode 'ignore) (f x ($fxadd1 i) j n mode)] [(eq? mode 'replace) (f x ($fxadd1 i) j ($fxadd1 n) mode)] - [else (error who "invalid byte at index of bytevector" b0 i x)]))]))) + [else (die who "invalid byte at index of bytevector" b0 i x)]))]))) (define (fill str bv i mode) (let f ([str str] [x bv] [i i] [j ($bytevector-length bv)] [n 0] [mode mode]) (cond @@ -227,12 +227,12 @@ [(eq? mode 'replace) ($string-set! str n ($fixnum->char #xFFFD)) (f str x i j ($fxadd1 n) mode)] - [else (error who "BUG")]))] + [else (die who "BUG")]))] [(eq? mode 'ignore) str] [(eq? mode 'replace) ($string-set! str n ($fixnum->char #xFFFD)) str] - [else (error who "BUG")]))] + [else (die who "BUG")]))] [($fx= ($fxsra b0 4) #b1110) (cond [($fx< ($fx+ i 2) j) @@ -254,12 +254,12 @@ [(eq? mode 'replace) ($string-set! str n ($fixnum->char #xFFFD)) (f str x ($fxadd1 i) j ($fxadd1 n) mode)] - [else (error who "BUG")]))] + [else (die who "BUG")]))] [(eq? mode 'ignore) (f str x ($fxadd1 i) j n mode)] [(eq? mode 'replace) ($string-set! str n ($fixnum->char #xFFFD)) (f str x ($fxadd1 i) j ($fxadd1 n) mode)] - [else (error who "BUG")])] + [else (die who "BUG")])] [($fx= ($fxsra b0 3) #b11110) (cond [($fx< ($fx+ i 3) j) @@ -285,17 +285,17 @@ [(eq? mode 'replace) ($string-set! str n ($fixnum->char #xFFFD)) (f str x ($fxadd1 i) j ($fxadd1 n) mode)] - [else (error who "BUG")]))] + [else (die who "BUG")]))] [(eq? mode 'ignore) (f str x ($fxadd1 i) j n mode)] [(eq? mode 'replace) ($string-set! str n ($fixnum->char #xFFFD)) (f str x ($fxadd1 i) j ($fxadd1 n) mode)] - [else (error who "BUG")])] + [else (die who "BUG")])] [(eq? mode 'ignore) (f str x ($fxadd1 i) j n mode)] [(eq? mode 'replace) ($string-set! str n ($fixnum->char #xFFFD)) (f str x ($fxadd1 i) j ($fxadd1 n) mode)] - [else (error who "BUG")]))]))) + [else (die who "BUG")]))]))) (define (has-bom? bv) (and (fx> (bytevector-length bv) 3) (fx= (bytevector-u8-ref bv 0) #xEF) @@ -311,7 +311,7 @@ [(bv) (convert bv 'raise)] [(bv handling-mode) (unless (memq handling-mode '(ignore replace raise)) - (error 'decode-utf8-bytevector + (die 'decode-utf8-bytevector "not a valid handling mode" handling-mode)) (convert bv handling-mode)]))) @@ -353,7 +353,7 @@ ;;; of W1. Terminate. ;;; ;;; 2) Determine if W1 is between 0xD800 and 0xDBFF. If not, the sequence -;;; is in error and no valid character can be obtained using W1. +;;; is in die and no valid character can be obtained using W1. ;;; Terminate. ;;; ;;; 3) If there is no W2 (that is, the sequence ends with W1), or if W2 @@ -407,13 +407,13 @@ (case-lambda [(str) (unless (string? str) - (error 'string->utf16 "not a string" str)) + (die 'string->utf16 "not a string" str)) ($string->utf16 str 'big)] [(str endianness) (unless (string? str) - (error 'string->utf16 "not a string" str)) + (die 'string->utf16 "not a string" str)) (unless (memv endianness '(big little)) - (error 'string->utf16 "invalid endianness" endianness)) + (die 'string->utf16 "invalid endianness" endianness)) ($string->utf16 str endianness)]))) (module (utf16->string) @@ -429,20 +429,20 @@ (cond [(or (fx< w1 #xD800) (fx> w1 #xDFFF)) (count-size bv endianness (+ i 2) len (+ n 1))] - [(not (fx<= #xD800 w1 #xDBFF)) ;;; error sequence + [(not (fx<= #xD800 w1 #xDBFF)) ;;; die sequence (count-size bv endianness (+ i 2) len (+ n 1))] [(<= (+ i 4) (bytevector-length bv)) (let ([w2 (bytevector-u16-ref bv (+ i 2) endianness)]) (cond [(not (<= #xDC00 w2 #xDFFF)) ;;; do we skip w2 also? - ;;; I won't. Just w1 is an error + ;;; I won't. Just w1 is an die (count-size bv endianness (+ i 2) len (+ n 1))] [else ;;; 4-byte sequence is ok (count-size bv endianness (+ i 4) len (+ n 1))]))] [else - ;;; error again + ;;; die again (count-size bv endianness (+ i 2) len (+ n 1))]))])) (define (fill bv endianness str i len n) (cond @@ -456,7 +456,7 @@ [(or (fx< w1 #xD800) (fx> w1 #xDFFF)) (string-set! str n (integer->char/invalid w1)) (fill bv endianness str (+ i 2) len (+ n 1))] - [(not (fx<= #xD800 w1 #xDBFF)) ;;; error sequence + [(not (fx<= #xD800 w1 #xDBFF)) ;;; die sequence (string-set! str n #\xFFFD) (fill bv endianness str (+ i 2) len (+ n 1))] [(<= (+ i 4) (bytevector-length bv)) @@ -464,7 +464,7 @@ (cond [(not (<= #xDC00 w2 #xDFFF)) ;;; do we skip w2 also? - ;;; I won't. Just w1 is an error + ;;; I won't. Just w1 is an die (string-set! str n #\xFFFD) (fill bv endianness str (+ i 2) len (+ n 1))] [else @@ -475,7 +475,7 @@ (fxlogand w2 #x3FF))))) (fill bv endianness str (+ i 4) len (+ n 1))]))] [else - ;;; error again + ;;; die again (string-set! str n #\xFFFD) (fill bv endianness str (+ i 2) len (+ n 1))]))])) (define (decode bv endianness start) @@ -492,9 +492,9 @@ [(fx= n #xFFFE) 'little] [else #f])))) (unless (bytevector? bv) - (error who "not a bytevector" bv)) + (die who "not a bytevector" bv)) (unless (memv endianness '(big little)) - (error who "invalid endianness" endianness)) + (die who "invalid endianness" endianness)) (cond [em? (decode bv endianness 0)] [(bom-present bv) => @@ -528,13 +528,13 @@ (case-lambda [(str) (unless (string? str) - (error who "not a string" str)) + (die who "not a string" str)) ($string->utf32 str 'big)] [(str endianness) (unless (string? str) - (error who "not a string" str)) + (die who "not a string" str)) (unless (memq endianness '(little big)) - (error who "invalid endianness" endianness)) + (die who "invalid endianness" endianness)) ($string->utf32 str endianness)]))) @@ -567,9 +567,9 @@ [(= n #xFFFE0000) 'little] [else #f])))) (unless (bytevector? bv) - (error who "not a bytevector" bv)) + (die who "not a bytevector" bv)) (unless (memv endianness '(big little)) - (error who "invalid endianness" endianness)) + (die who "invalid endianness" endianness)) (cond [em? (decode bv endianness 0)] [(bom-present bv) => diff --git a/scheme/ikarus.unicode-data.ss b/scheme/ikarus.unicode-data.ss index faa610d..edab8c0 100644 --- a/scheme/ikarus.unicode-data.ss +++ b/scheme/ikarus.unicode-data.ss @@ -77,12 +77,12 @@ (if (char? c) (vector-ref unicode-categories-name-vector (fxlogand 63 (lookup-char-info c))) - (error 'char-general-category "not a char" c))) + (die 'char-general-category "not a char" c))) (define (char-has-property? c prop-val who) (if (char? c) (not (fxzero? (fxlogand (lookup-char-info c) prop-val))) - (error who "not a char" c))) + (die who "not a char" c))) (define (unicode-printable-char? c) (char-has-property? c constituent-property 'unicode-printable-char?)) @@ -112,24 +112,24 @@ (if (char? x) ($fixnum->char (convert-char x char-downcase-adjustment-vector)) - (error 'char-downcase "not a character" x))) + (die 'char-downcase "not a character" x))) (define (char-upcase x) (if (char? x) ($fixnum->char (convert-char x char-upcase-adjustment-vector)) - (error 'char-downcase "not a character" x))) + (die 'char-downcase "not a character" x))) (define (char-titlecase x) (if (char? x) ($fixnum->char (convert-char x char-titlecase-adjustment-vector)) - (error 'char-downcase "not a character" x))) + (die 'char-downcase "not a character" x))) (define (char-foldcase x) (if (char? x) ($fixnum->char ($fold x)) - (error 'char-downcase "not a character" x))) + (die 'char-downcase "not a character" x))) (define ($fold x) (convert-char x char-foldcase-adjustment-vector)) @@ -137,7 +137,7 @@ (define (char-ci-loop c0 ls p? who) (or (null? ls) (let ([c1 (car ls)]) - (unless (char? c1) (error who "not a char" c1)) + (unless (char? c1) (die who "not a char" c1)) (let ([c1 ($fold c1)]) (if (p? c0 c1) (char-ci-loop c1 (cdr ls) p? who) @@ -146,7 +146,7 @@ [(null? ls) #f] [(char? (car ls)) (f (cdr ls) who)] - [else (error who "not a char" (car ls))]))))))) + [else (die who "not a char" (car ls))]))))))) (define char-ci=? (case-lambda @@ -155,14 +155,14 @@ (or (eq? x y) (if (char? y) ($fx= ($fold x) ($fold y)) - (error 'char-ci=? "not a char" y))) - (error 'char-ci=? "not a char" x))] + (die 'char-ci=? "not a char" y))) + (die 'char-ci=? "not a char" x))] [(x) - (or (char? x) (error 'char-ci=? "not a char" x))] + (or (char? x) (die 'char-ci=? "not a char" x))] [(x . x*) (if (char? x) (char-ci-loop x x* char=? 'char-ci=?) - (error 'char-ci=? "not a char" x))])) + (die 'char-ci=? "not a char" x))])) (define char-ci? (case-lambda @@ -203,14 +203,14 @@ (or (eq? x y) (if (char? y) ($fx> ($fold x) ($fold y)) - (error 'char-ci>? "not a char" y))) - (error 'char-ci>? "not a char" x))] + (die 'char-ci>? "not a char" y))) + (die 'char-ci>? "not a char" x))] [(x) - (or (char? x) (error 'char-ci>? "not a char" x))] + (or (char? x) (die 'char-ci>? "not a char" x))] [(x . x*) (if (char? x) (char-ci-loop x x* char>? 'char-ci>?) - (error 'char-ci>? "not a char" x))])) + (die 'char-ci>? "not a char" x))])) (define char-ci>=? (case-lambda @@ -219,14 +219,14 @@ (or (eq? x y) (if (char? y) ($fx>= ($fold x) ($fold y)) - (error 'char-ci>=? "not a char" y))) - (error 'char-ci>=? "not a char" x))] + (die 'char-ci>=? "not a char" y))) + (die 'char-ci>=? "not a char" x))] [(x) - (or (char? x) (error 'char-ci>=? "not a char" x))] + (or (char? x) (die 'char-ci>=? "not a char" x))] [(x . x*) (if (char? x) (char-ci-loop x x* char>=? 'char-ci>=?) - (error 'char-ci>=? "not a char" x))])) + (die 'char-ci>=? "not a char" x))])) (define ($string-foldcase str) (define (extend-length str ac) @@ -282,7 +282,7 @@ (define (string-foldcase str) (if (string? str) ($string-foldcase str) - (error 'string-foldcase "not a string" str))) + (die 'string-foldcase "not a string" str))) ;;; FIXME: case-insensitive comparison procedures are slow. @@ -293,8 +293,8 @@ (if (string? s1) (if (string? s2) (cmp ($string-foldcase s1) ($string-foldcase s2)) - (error who "not a string" s2)) - (error who "not a string" s1))] + (die who "not a string" s2)) + (die who "not a string" s1))] [(s1 . s*) (if (string? s1) (let ([s1 ($string-foldcase s1)]) @@ -313,10 +313,10 @@ [(string? (car s*)) (f (cdr s*))] [else - (error who "not a string" + (die who "not a string" (car s*))])))) - (error who "not a string" s2)))]))) - (error who "not a string" s1))]))) + (die who "not a string" s2)))]))) + (die who "not a string" s1))]))) (define string-ci=? (string-ci-cmp 'string-ci=? string=?)) diff --git a/scheme/ikarus.vectors.ss b/scheme/ikarus.vectors.ss index 7a722f8..0224f15 100644 --- a/scheme/ikarus.vectors.ss +++ b/scheme/ikarus.vectors.ss @@ -31,7 +31,7 @@ (define vector-length (lambda (x) (unless (vector? x) - (error 'vector-length "not a vector" x)) + (die 'vector-length "not a vector" x)) ($vector-length x))) (module (make-vector) @@ -47,7 +47,7 @@ [(n) (make-vector n (void))] [(n fill) (unless (and (fixnum? n) ($fx>= n 0)) - (error 'make-vector "not a valid length" n)) + (die 'make-vector "not a valid length" n)) (fill! ($make-vector n) 0 n fill)]))) @@ -74,23 +74,23 @@ (define vector-ref (lambda (v i) (unless (vector? v) - (error 'vector-ref "not a vector" v)) + (die 'vector-ref "not a vector" v)) (unless (fixnum? i) - (error 'vector-ref "not a valid index" i)) + (die 'vector-ref "not a valid index" i)) (unless (and ($fx< i ($vector-length v)) ($fx<= 0 i)) - (error 'vector-ref "index is out of range" i v)) + (die 'vector-ref "index is out of range" i v)) ($vector-ref v i))) (define vector-set! (lambda (v i c) (unless (vector? v) - (error 'vector-set! "not a vector" v)) + (die 'vector-set! "not a vector" v)) (unless (fixnum? i) - (error 'vector-set! "not a valid index" i)) + (die 'vector-set! "not a valid index" i)) (unless (and ($fx< i ($vector-length v)) ($fx<= 0 i)) - (error 'vector-set! "index is out of range" i v)) + (die 'vector-set! "index is out of range" i v)) ($vector-set! v i c))) (define vector->list @@ -106,7 +106,7 @@ (if ($fxzero? n) '() (f v ($fxsub1 n) '()))) - (error 'vector->list "not a vector" v)))) + (die 'vector->list "not a vector" v)))) (define list->vector (letrec ([race @@ -116,13 +116,13 @@ (if (pair? h) (if (not (eq? h t)) (race ($cdr h) ($cdr t) ls ($fx+ n 2)) - (error 'list->vector "circular list" ls)) + (die 'list->vector "circular list" ls)) (if (null? h) ($fx+ n 1) - (error 'list->vector "not a proper list" ls)))) + (die 'list->vector "not a proper list" ls)))) (if (null? h) n - (error 'list->vector "not a proper list" ls))))] + (die 'list->vector "not a proper list" ls))))] [fill (lambda (v i ls) (cond @@ -152,9 +152,9 @@ (case-lambda [(p v) (unless (procedure? p) - (error who "not a procedure" p)) + (die who "not a procedure" p)) (unless (vector? v) - (error who "not a vector" v)) + (die who "not a vector" v)) (let f ([p p] [v v] [i 0] [n (vector-length v)] [ac '()]) (cond [($fx= i n) (ls->vec ac n)] @@ -162,14 +162,14 @@ (f p v ($fxadd1 i) n (cons (p (vector-ref v i)) ac))]))] [(p v0 v1) (unless (procedure? p) - (error who "not a procedure" p)) + (die who "not a procedure" p)) (unless (vector? v0) - (error who "not a vector" v0)) + (die who "not a vector" v0)) (unless (vector? v1) - (error who "not a vector" v1)) + (die who "not a vector" v1)) (let ([n (vector-length v0)]) (unless ($fx= n ($vector-length v1)) - (error who "length mismatch" v0 v1)) + (die who "length mismatch" v0 v1)) (let f ([p p] [v0 v0] [v1 v1] [i 0] [n n] [ac '()]) (cond [($fx= i n) (ls->vec ac n)] @@ -178,21 +178,21 @@ (cons (p ($vector-ref v0 i) ($vector-ref v1 i)) ac))])))] [(p v0 v1 . v*) (unless (procedure? p) - (error who "not a procedure" p)) + (die who "not a procedure" p)) (unless (vector? v0) - (error who "not a vector" v0)) + (die who "not a vector" v0)) (unless (vector? v1) - (error who "not a vector" v1)) + (die who "not a vector" v1)) (let ([n (vector-length v0)]) (unless ($fx= n ($vector-length v1)) - (error who "length mismatch" v0 v1)) + (die who "length mismatch" v0 v1)) (let f ([v* v*] [n n]) (unless (null? v*) (let ([a ($car v*)]) (unless (vector? a) - (error who "not a vector" a)) + (die who "not a vector" a)) (unless ($fx= ($vector-length a) n) - (error who "length mismatch"))) + (die who "length mismatch"))) (f ($cdr v*) n))) (let f ([p p] [v0 v0] [v1 v1] [v* v*] [i 0] [n n] [ac '()]) (cond @@ -215,9 +215,9 @@ (case-lambda [(p v) (unless (procedure? p) - (error who "not a procedure" p)) + (die who "not a procedure" p)) (unless (vector? v) - (error who "not a vector" v)) + (die who "not a vector" v)) (let f ([p p] [v v] [i 0] [n (vector-length v)]) (cond [($fx= i n) (void)] @@ -226,14 +226,14 @@ (f p v ($fxadd1 i) n)]))] [(p v0 v1) (unless (procedure? p) - (error who "not a procedure" p)) + (die who "not a procedure" p)) (unless (vector? v0) - (error who "not a vector" v0)) + (die who "not a vector" v0)) (unless (vector? v1) - (error who "not a vector" v1)) + (die who "not a vector" v1)) (let ([n (vector-length v0)]) (unless ($fx= n ($vector-length v1)) - (error who "length mismatch" v0 v1)) + (die who "length mismatch" v0 v1)) (let f ([p p] [v0 v0] [v1 v1] [i 0] [n n]) (cond [($fx= i n) (void)] @@ -242,21 +242,21 @@ (f p v0 v1 ($fxadd1 i) n)])))] [(p v0 v1 . v*) (unless (procedure? p) - (error who "not a procedure" p)) + (die who "not a procedure" p)) (unless (vector? v0) - (error who "not a vector" v0)) + (die who "not a vector" v0)) (unless (vector? v1) - (error who "not a vector" v1)) + (die who "not a vector" v1)) (let ([n (vector-length v0)]) (unless ($fx= n ($vector-length v1)) - (error who "length mismatch" v0 v1)) + (die who "length mismatch" v0 v1)) (let f ([v* v*] [n n]) (unless (null? v*) (let ([a ($car v*)]) (unless (vector? a) - (error who "not a vector" a)) + (die who "not a vector" a)) (unless ($fx= ($vector-length a) n) - (error who "length mismatch"))) + (die who "length mismatch"))) (f ($cdr v*) n))) (let f ([p p] [v0 v0] [v1 v1] [v* v*] [i 0] [n n]) (cond @@ -272,7 +272,7 @@ (define (vector-fill! v fill) (unless (vector? v) - (error 'vector-fill! "not a vector" v)) + (die 'vector-fill! "not a vector" v)) (let f ([v v] [i 0] [n ($vector-length v)] [fill fill]) (unless ($fx= i n) ($vector-set! v i fill) diff --git a/scheme/ikarus.writer.ss b/scheme/ikarus.writer.ss index 6e28834..7851c7c 100644 --- a/scheme/ikarus.writer.ss +++ b/scheme/ikarus.writer.ss @@ -334,7 +334,7 @@ (write-char #\. p) (write-char #\. p) (write-char #\. p)] - [else (error 'write-peculiear "BUG")]))) + [else (die 'write-peculiear "BUG")]))) (define write-symbol (lambda (x p m) @@ -721,7 +721,7 @@ (cond [(fx= i (string-length fmt)) (unless (null? args) - (error who + (die who (format "extra arguments given for format string \x2036;~a\x2033;" fmt)))] @@ -731,30 +731,30 @@ [(eqv? c #\~) (let ([i (fxadd1 i)]) (when (fx= i (string-length fmt)) - (error who "invalid ~ at end of format string" fmt)) + (die who "invalid ~ at end of format string" fmt)) (let ([c (string-ref fmt i)]) (cond [(memv c '(#\~ #\%)) (f (fxadd1 i) args)] [(memv c '(#\a #\s)) (when (null? args) - (error who "insufficient arguments")) + (die who "insufficient arguments")) (f (fxadd1 i) (cdr args))] [(memv c '(#\b #\o #\x #\d)) (when (null? args) - (error who "insufficient arguments")) + (die who "insufficient arguments")) (let ([a (car args)]) (cond [(or (fixnum? a) (bignum? a) (ratnum? a)) (void)] [(flonum? a) (unless (eqv? c #\d) - (error who + (die who (format "flonums cannot be printed with ~~~a" c)))] [else - (error who "not a number" a)])) + (die who "not a number" a)])) (f (fxadd1 i) (cdr args))] [else - (error who "invalid sequence character after ~" c)])))] + (die who "invalid sequence character after ~" c)])))] [else (f (fxadd1 i) args)]))])) ;;; then format (let f ([i 0] [args args]) @@ -787,9 +787,9 @@ [(flonum? a) (display-to-port (number->string a) p)] [else - (error who "BUG: not a number" a)])) + (die who "BUG: not a number" a)])) (f (fxadd1 i) (cdr args)))] - [else (error who "BUG" c)])))] + [else (die who "BUG" c)])))] [else (write-char c p) (f (fxadd1 i) args)])))) @@ -799,15 +799,15 @@ (define fprintf (lambda (port fmt . args) (unless (output-port? port) - (error 'fprintf "not an output port" port)) + (die 'fprintf "not an output port" port)) (unless (string? fmt) - (error 'fprintf "not a string" fmt)) + (die 'fprintf "not a string" fmt)) (formatter 'fprintf port fmt args))) (define display-error (lambda (errname who fmt args) (unless (string? fmt) - (error 'print-error "not a string" fmt)) + (die 'print-error "not a string" fmt)) (let ([p (standard-error-port)]) (if who (fprintf p "~a in ~a: " errname who) @@ -819,7 +819,7 @@ (define format (lambda (fmt . args) (unless (string? fmt) - (error 'format "not a string" fmt)) + (die 'format "not a string" fmt)) (let-values ([(p e) (open-string-output-port)]) (formatter 'format p fmt args) (e)))) @@ -827,7 +827,7 @@ (define printf (lambda (fmt . args) (unless (string? fmt) - (error 'printf "not a string" fmt)) + (die 'printf "not a string" fmt)) (formatter 'printf (current-output-port) fmt args))) (define write @@ -835,12 +835,12 @@ [(x) (write-to-port x (current-output-port))] [(x p) (unless (output-port? p) - (error 'write "not an output port" p)) + (die 'write "not an output port" p)) (write-to-port x p)])) (define (put-datum p x) (unless (output-port? p) - (error 'put-datum "not an output port" p)) + (die 'put-datum "not an output port" p)) (write-to-port x p)) (define display @@ -848,7 +848,7 @@ [(x) (display-to-port x (current-output-port))] [(x p) (unless (output-port? p) - (error 'display "not an output port" p)) + (die 'display "not an output port" p)) (display-to-port x p)])) (define print-error diff --git a/scheme/makefile.ss b/scheme/makefile.ss index b740e66..d3c5cb4 100755 --- a/scheme/makefile.ss +++ b/scheme/makefile.ss @@ -659,6 +659,7 @@ [equal? i r ba se] [eqv? i r ba se] [error i r ba] + [die i] [even? i r ba se] [exact i r ba] [exact-integer-sqrt i r ba] diff --git a/scheme/psyntax.expander.ss b/scheme/psyntax.expander.ss index 815206c..e102670 100644 --- a/scheme/psyntax.expander.ss +++ b/scheme/psyntax.expander.ss @@ -76,7 +76,7 @@ (cond ((symbol? sym) (gensym sym)) ((stx? sym) (gen-lexical (id->sym sym))) - (else (error 'gen-lexical "BUG: invalid arg" sym))))) + (else (assertion-violation 'gen-lexical "BUG: invalid arg" sym))))) ;;; gen-global is used to generate global names (e.g. locations ;;; for library exports). We use gen-lexical since it works just @@ -117,7 +117,7 @@ (car label*) (find sym mark* (cdr sym*) (cdr mark**) (cdr label*))))) (when (rib-sealed/freq rib) - (error 'extend-rib! "rib is sealed" rib)) + (assertion-violation 'extend-rib! "rib is sealed" rib)) (let ((sym (id->sym id)) (mark* (stx-mark* id))) (let ((sym* (rib-sym* rib))) @@ -127,7 +127,7 @@ => (lambda (label^) (unless (eq? label label^) - ;;; signal an error if the identifier was already + ;;; signal an assertion-violation if the identifier was already ;;; in the rib. (stx-error id "cannot redefine")))] [else @@ -347,7 +347,7 @@ (m* (stx-mark* x)) (s* (stx-subst* x))) (map (lambda (x) (mkstx x m* s*)) ls))) ((vector? x) (vector->list x)) - (else (error 'syntax-vector->list "not a syntax vector" x))))) + (else (assertion-violation 'syntax-vector->list "not a syntax vector" x))))) (define syntax-pair? (lambda (x) (syntax-kind? x pair?))) (define syntax-vector? @@ -364,21 +364,21 @@ (mkstx (syntax-car (stx-expr x)) (stx-mark* x) (stx-subst* x)) (if (pair? x) (car x) - (error 'syntax-car "not a pair" x))))) + (assertion-violation 'syntax-car "not a pair" x))))) (define syntax->list (lambda (x) (if (syntax-pair? x) (cons (syntax-car x) (syntax->list (syntax-cdr x))) (if (syntax-null? x) '() - (error 'syntax->list "invalid argument" x))))) + (assertion-violation 'syntax->list "invalid argument" x))))) (define syntax-cdr (lambda (x) (if (stx? x) (mkstx (syntax-cdr (stx-expr x)) (stx-mark* x) (stx-subst* x)) (if (pair? x) (cdr x) - (error 'syntax-cdr "not a pair" x))))) + (assertion-violation 'syntax-cdr "not a pair" x))))) (define id? (lambda (x) (syntax-kind? x symbol?))) @@ -388,7 +388,7 @@ (id->sym (stx-expr x)) (if (symbol? x) x - (error 'id->sym "not an id" x))))) + (assertion-violation 'id->sym "not an id" x))))) ;;; Two lists of marks are considered the same if they have the ;;; same length and the corresponding marks on each are eq?. @@ -578,9 +578,9 @@ (lambda (x) (syntax-case x () ((_ stx) - (syntax (error 'expander "invalid syntax" (stx->datum stx)))) + (syntax (assertion-violation 'expander "invalid syntax" (stx->datum stx)))) ((_ stx msg arg* ...) - (syntax (error 'expander msg (strip stx '()) arg* ...)))))) + (syntax (assertion-violation 'expander msg (strip stx '()) arg* ...)))))) ;;; when the rhs of a syntax definition is evaluated, it should be ;;; either a procedure, an identifier-syntax transformer or an @@ -589,7 +589,7 @@ ;;; (lacal-macro . procedure) ;;; (local-macro! . procedure) ;;; ($rtd . $rtd) - ;;; and signals an error otherwise. + ;;; and signals an assertion-violation otherwise. (define sanitize-binding (lambda (x src) (cond @@ -598,14 +598,14 @@ ((and (pair? x) (eq? (car x) 'macro!) (procedure? (cdr x))) (cons* 'local-macro! (cdr x) src)) ((and (pair? x) (eq? (car x) '$rtd)) x) - (else (error 'expand "invalid transformer" x))))) + (else (assertion-violation 'expand "invalid transformer" x))))) ;;; r6rs's make-variable-transformer: (define make-variable-transformer (lambda (x) (if (procedure? x) (cons 'macro! x) - (error 'make-variable-transformer + (assertion-violation 'make-variable-transformer "not a procedure" x)))) ;;; make-eval-transformer takes an expanded expression, @@ -1111,7 +1111,7 @@ (let ((v ,expr)) (if (procedure? v) (make-traced-procedure ',who v) - (error 'trace-define + (assertion-violation 'trace-define "not a procedure" v))))) (stx-error stx "invalid name")))))) @@ -1124,7 +1124,7 @@ (let ((v ,expr)) (if (procedure? v) (make-traced-procedure ',who v syntax->datum) - (error 'trace-define-syntax + (assertion-violation 'trace-define-syntax "not a procedure" v))))) (stx-error stx "invalid name")))))) @@ -1233,7 +1233,7 @@ (syntax-match stx () ((_ expr) (bless `(unless ,expr - (error 'assert "assertion failed" ',expr))))))) + (assertion-violation 'assert "assertion failed" ',expr))))))) (define endianness-macro (lambda (stx) @@ -1597,7 +1597,7 @@ (lambda (x) (if ($struct/rtd? x ',rtd) ($struct-ref x ,i) - (error ',getter + (assertion-violation ',getter "not a struct of required type" x ',rtd))))) getters i*) @@ -1606,7 +1606,7 @@ (lambda (x v) (if ($struct/rtd? x ',rtd) ($struct-set! x ,i v) - (error ',setter + (assertion-violation ',setter "not a struct of required type" x ',rtd))))) setters i*))))))) @@ -1624,7 +1624,7 @@ (cond [(symbol? x) (symbol->string x)] [(string? x) x] - [else (error 'define-record-type "BUG")])) + [else (assertion-violation 'define-record-type "BUG")])) str*))))) (define (get-record-name spec) (syntax-match spec () @@ -2011,7 +2011,7 @@ (match-empty (vector-ref p 3) r)))) ((free-id atom) r) ((vector) (match-empty (vector-ref p 1) r)) - (else (error 'syntax-dispatch "invalid pattern" p))))))) + (else (assertion-violation 'syntax-dispatch "invalid pattern" p))))))) (define combine (lambda (r* r) (if (null? (car r*)) @@ -2051,7 +2051,7 @@ ((vector) (and (vector? e) (match (vector->list e) (vector-ref p 1) m* s* r))) - (else (error 'syntax-dispatch "invalid pattern" p))))))) + (else (assertion-violation 'syntax-dispatch "invalid pattern" p))))))) (define match (lambda (e p m* s* r) (cond @@ -2334,7 +2334,7 @@ ((type-descriptor) type-descriptor-transformer) ((record-type-descriptor) record-type-descriptor-transformer) ((record-constructor-descriptor) record-constructor-descriptor-transformer) - (else (error 'macro-transformer "cannot find transformer" name))))) + (else (assertion-violation 'macro-transformer "cannot find transformer" name))))) (define file-options-macro (lambda (x) @@ -2398,8 +2398,8 @@ fields mutable immutable parent protocol sealed opaque nongenerative parent-rtd) incorrect-usage-macro) - (else (error 'macro-transformer "invalid macro" x)))) - (else (error 'core-macro-transformer "invalid macro" x))))) + (else (assertion-violation 'macro-transformer "invalid macro" x)))) + (else (assertion-violation 'core-macro-transformer "invalid macro" x))))) (define (local-macro-transformer x) (car x)) @@ -2424,7 +2424,7 @@ (let ((transformer (cond ((procedure? x) x) - (else (error 'chi-global-macro "not a procedure"))))) + (else (assertion-violation 'chi-global-macro "not a procedure"))))) (let ((s (transformer (add-mark anti-mark e)))) (add-mark (gen-mark) s)))))) @@ -2514,7 +2514,7 @@ (stx-error e "attempt to reference an unexportable variable")) (else - ;(error 'chi-expr "invalid type " type (strip e '())) + ;(assertion-violation 'chi-expr "invalid type " type (strip e '())) (stx-error e "invalid expression")))))) (define chi-set! @@ -2600,7 +2600,7 @@ (build-sequence no-source (list (chi-expr expr r mr) (build-void))))) - (else (error 'chi-rhs "invalid rhs" rhs))))) + (else (assertion-violation 'chi-rhs "invalid rhs" rhs))))) (define chi-rhs* (lambda (rhs* r mr) @@ -2814,7 +2814,7 @@ [(local-macro) 'global-macro] [(local-macro!) 'global-macro!] [else - (error 'set-global-macro-binding! + (assertion-violation 'set-global-macro-binding! "BUG: invalid type" b)])] [transformer (cadr b)] [label (id->label id)] @@ -2868,7 +2868,7 @@ (set-global-macro-binding! id loc b) (chi-top* (cdr e*) init*)))))) ((let-syntax letrec-syntax) - (error 'chi-top* "not supported yet at top level" type)) + (assertion-violation 'chi-top* "not supported yet at top level" type)) ((begin) (syntax-match e () ((_ x* ...) @@ -2903,7 +2903,7 @@ (else (extend-library-subst! lib sym label)))) subst-names subst-labels))) - (else (error 'import "BUG: cannot happen"))))]) + (else (assertion-violation 'import "BUG: cannot happen"))))]) (chi-top* (cdr e*) init*))) (else (chi-top* (cdr e*) @@ -2930,7 +2930,7 @@ ((null? exp*) (let ((id* (map (lambda (x) (mkstx x top-mark* '())) ext*))) (unless (valid-bound-ids? id*) - (error 'expander "invalid exports" (find-dups id*)))) + (assertion-violation 'expander "invalid exports" (find-dups id*)))) (values int* ext*)) (else (syntax-match (car exp*) () @@ -2938,11 +2938,11 @@ (begin (unless (and (eq? rename 'rename) (for-all symbol? i*) (for-all symbol? e*)) - (error 'expander "invalid export specifier" (car exp*))) + (assertion-violation 'expander "invalid export specifier" (car exp*))) (f (cdr exp*) (append i* int*) (append e* ext*)))) (ie (begin - (unless (symbol? ie) (error 'expander "invalid export" ie)) + (unless (symbol? ie) (assertion-violation 'expander "invalid export" ie)) (f (cdr exp*) (cons ie int*) (cons ie ext*))))))))) ;;; given a library name, like (foo bar (1 2 3)), @@ -2983,7 +2983,7 @@ ;;; and (# #) (define (parse-import-spec* imp*) (define (dup-error name) - (error 'import "two imports with different bindings" name)) + (assertion-violation 'import "two imports with different bindings" name)) (define (merge-substs s subst) (define (insert-to-subst a subst) (let ((name (car a)) (label (cdr a))) @@ -3004,7 +3004,7 @@ (define (exclude sym subst) (cond ((null? subst) - (error 'import "cannot rename unbound identifier" sym)) + (assertion-violation 'import "cannot rename unbound identifier" sym)) ((eq? sym (caar subst)) (values (cdar subst) (cdr subst))) (else @@ -3021,7 +3021,7 @@ (map (lambda (x) (cond ((assq x subst) => cdr) - (else (error 'import "cannot find identifier" x)))) + (else (assertion-violation 'import "cannot find identifier" x)))) sym*)) (define (rem* sym* subst) (let f ((subst subst)) @@ -3057,7 +3057,7 @@ (lambda (x) (<= x n))] [(p? n) (and (eq? p? '>=) (subversion? n)) (lambda (x) (>= x n))] - [_ (error 'import "invalid sub-version spec" x* spec)])) + [_ (assertion-violation 'import "invalid sub-version spec" x* spec)])) (define (version-pred x*) (syntax-match x* () [() (lambda (x) #t)] @@ -3082,7 +3082,7 @@ [else (and ((car p*) (car x)) (f (cdr p*) (cdr x*)))]))))] - [_ (error 'import "invalid version spec" x* spec)])) + [_ (assertion-violation 'import "invalid version spec" x* spec)])) (let f ([x spec]) (syntax-match x () [((version-spec* ...)) @@ -3130,14 +3130,14 @@ ;;; FIXME: versioning stuff (let-values ([(name pred) (parse-library-name spec*)]) (when (null? name) - (error 'import "empty library name" spec*)) + (assertion-violation 'import "empty library name" spec*)) (let ((lib (find-library-by-name name))) (unless lib - (error 'import + (assertion-violation 'import "cannot find library with required name" name)) (unless (pred (library-version lib)) - (error 'import + (assertion-violation 'import "library does not satisfy version specification" lib spec*)) @@ -3146,7 +3146,7 @@ ((x x* ...) (not (memq x '(rename except only prefix library))) (get-import `(library (,x . ,x*)))) - (spec (error 'import "invalid import spec" spec)))) + (spec (assertion-violation 'import "invalid import spec" spec)))) (define (add-imports! imp h) (let ([subst (get-import imp)]) (for-each @@ -3193,28 +3193,28 @@ (define inv-collector (make-parameter (lambda args - (error 'inv-collector "not initialized")) + (assertion-violation 'inv-collector "not initialized")) (lambda (x) (unless (procedure? x) - (error 'inv-collector "not a procedure" x)) + (assertion-violation 'inv-collector "not a procedure" x)) x))) (define vis-collector (make-parameter (lambda args - (error 'vis-collector "not initialized")) + (assertion-violation 'vis-collector "not initialized")) (lambda (x) (unless (procedure? x) - (error 'vis-collector "not a procedure" x)) + (assertion-violation 'vis-collector "not a procedure" x)) x))) (define imp-collector (make-parameter (lambda args - (error 'imp-collector "not initialized")) + (assertion-violation 'imp-collector "not initialized")) (lambda (x) (unless (procedure? x) - (error 'imp-collector "not a procedure" x)) + (assertion-violation 'imp-collector "not a procedure" x)) x))) (define chi-library-internal @@ -3258,7 +3258,7 @@ (let ([b (cdr p)]) (let ([type (car b)]) (when (eq? type 'mutable) - (error 'export errstr name)))))))) + (assertion-violation 'export errstr name)))))))) export-subst) (let ((invoke-body (build-library-letrec* no-source @@ -3295,10 +3295,10 @@ (((import imp* ...) b* ...) (eq? import 'import) (values imp* b*)) (((import . x) . y) (eq? import 'import) - (error 'expander + (assertion-violation 'expander "invalid syntax of top-level program")) (_ - (error 'expander + (assertion-violation 'expander "top-level program is missing an (import ---) clause")))) (define top-level-expander @@ -3314,7 +3314,7 @@ (define-record env (names labels itc) (lambda (x p) (unless (env? x) - (error 'record-type-printer "not an environment")) + (assertion-violation 'record-type-printer "not an environment")) (display "#" p))) (define environment? @@ -3335,11 +3335,11 @@ ;;; constructed simply using the corresponding libraries. (define (null-environment n) (unless (eqv? n 5) - (error 'null-environment "not 5" n)) + (assertion-violation 'null-environment "not 5" n)) (environment '(psyntax null-environment-5))) (define (scheme-report-environment n) (unless (eqv? n 5) - (error 'scheme-report-environment "not 5" n)) + (assertion-violation 'scheme-report-environment "not 5" n)) (environment '(psyntax scheme-report-environment-5))) ;;; The expand procedure is the interface to the internal expression @@ -3349,7 +3349,7 @@ (define expand (lambda (x env) (unless (env? env) - (error 'expand "not an environment" env)) + (assertion-violation 'expand "not an environment" env)) (let ((rib (make-top-rib (env-names env) (env-labels env)))) (let ((x (mkstx x top-mark* (list rib))) (itc (env-itc env)) @@ -3369,7 +3369,7 @@ (define eval (lambda (x env) (unless (env? env) - (error 'eval "not an environment" env)) + (assertion-violation 'eval "not an environment" env)) (let-values (((x invoke-req*) (expand x env))) (for-each invoke-library invoke-req*) (eval-core (expanded->core x))))) @@ -3450,7 +3450,7 @@ (if (eq? x (car lex*)) (car loc*) (f x (cdr lex*) (cdr loc*)))] - [else (error 'lookup-make-export "BUG")]))) + [else (assertion-violation 'lookup-make-export "BUG")]))) (let f ((r r) (env '()) (global* '()) (macro* '())) (cond ((null? r) (values env global* macro*)) @@ -3482,7 +3482,7 @@ (cons (cons loc (binding-value b)) macro*)))) (($rtd $module) (f (cdr r) (cons x env) global* macro*)) (else - (error 'expander "BUG: do not know how to export" + (assertion-violation 'expander "BUG: do not know how to export" (binding-type b) (binding-value b)))))))))) (define generate-temporaries @@ -3499,28 +3499,28 @@ top-mark* '())) ls)) (_ - (error 'generate-temporaries "not a list"))))) + (assertion-violation 'generate-temporaries "not a list"))))) (define free-identifier=? (lambda (x y) (if (id? x) (if (id? y) (free-id=? x y) - (error 'free-identifier=? "not an identifier" y)) - (error 'free-identifier=? "not an identifier" x)))) + (assertion-violation 'free-identifier=? "not an identifier" y)) + (assertion-violation 'free-identifier=? "not an identifier" x)))) (define bound-identifier=? (lambda (x y) (if (id? x) (if (id? y) (bound-id=? x y) - (error 'bound-identifier=? "not an identifier" y)) - (error 'bound-identifier=? "not an identifier" x)))) + (assertion-violation 'bound-identifier=? "not an identifier" y)) + (assertion-violation 'bound-identifier=? "not an identifier" x)))) (define syntax-error (lambda (x . args) (unless (for-all string? args) - (error 'syntax-error "invalid argument" args)) + (assertion-violation 'syntax-error "invalid argument" args)) (raise (condition (make-message-condition @@ -3537,7 +3537,7 @@ (syntax-violation who msg form #f)] [(who msg form subform) (unless (string? msg) - (error 'syntax-violation "message is not a string" msg)) + (assertion-violation 'syntax-violation "message is not a string" msg)) (let ([who (cond [(or (string? who) (symbol? who)) who] @@ -3547,7 +3547,7 @@ [(id . rest) (id? id) (syntax->datum id)] [_ #f])] [else - (error 'syntax-violation + (assertion-violation 'syntax-violation "invalid who argument" who)])]) (raise (condition @@ -3565,7 +3565,7 @@ (lambda (id datum) (if (id? id) (datum->stx id datum) - (error 'datum->syntax "not an identifier" id)))) + (assertion-violation 'datum->syntax "not an identifier" id)))) (define syntax->datum (lambda (x) (stx->datum x))) diff --git a/scheme/psyntax.library-manager.ss b/scheme/psyntax.library-manager.ss index ebc718e..5bbd29f 100644 --- a/scheme/psyntax.library-manager.ss +++ b/scheme/psyntax.library-manager.ss @@ -44,14 +44,14 @@ (make-parameter (make-collection) (lambda (x) (unless (procedure? x) - (error 'current-library-collection "not a procedure" x)) + (assertion-violation 'current-library-collection "not a procedure" x)) x))) (define-record library (id name version imp* vis* inv* subst env visit-state invoke-state visible?) (lambda (x p) (unless (library? x) - (error 'record-type-printer "not a library")) + (assertion-violation 'record-type-printer "not a library")) (display (format "#" (if (null? (library-version x)) @@ -62,7 +62,7 @@ (define (find-dependencies ls) (cond ((null? ls) '()) - (else (error 'find-dependencies "cannot handle deps yet")))) + (else (assertion-violation 'find-dependencies "cannot handle deps yet")))) (define (find-library-by pred) (let f ((ls ((current-library-collection)))) @@ -77,7 +77,7 @@ (lambda (x) (if (and (list? x) (for-all string? x)) (map (lambda (x) x) x) - (error 'library-path "not a list of strings" x))))) + (assertion-violation 'library-path "not a list of strings" x))))) (define (library-name->file-name x) (let-values (((p extract) (open-string-output-port))) @@ -141,7 +141,7 @@ (lambda (f) (if (procedure? f) f - (error 'file-locator "not a procedure" f))))) + (assertion-violation 'file-locator "not a procedure" f))))) (define library-locator (make-parameter @@ -152,17 +152,17 @@ (lambda (f) (if (procedure? f) f - (error 'library-locator + (assertion-violation 'library-locator "not a procedure" f))))) (define current-library-expander (make-parameter (lambda (x) - (error 'library-expander "not initialized")) + (assertion-violation 'library-expander "not initialized")) (lambda (f) (if (procedure? f) f - (error 'library-expander + (assertion-violation 'library-expander "not a procedure" f))))) (define external-pending-libraries @@ -170,16 +170,16 @@ (define (find-external-library name) (when (member name (external-pending-libraries)) - (error #f "circular attempt to import library was detected" name)) + (assertion-violation #f "circular attempt to import library was detected" name)) (parameterize ((external-pending-libraries (cons name (external-pending-libraries)))) (let ((lib-expr ((library-locator) name))) (unless lib-expr - (error #f "cannot find library" name)) + (assertion-violation #f "cannot find library" name)) ((current-library-expander) lib-expr) (or (find-library-by (lambda (x) (equal? (library-name x) name))) - (error #f + (assertion-violation #f "handling external library did not yield the correct library" name))))) @@ -197,7 +197,7 @@ (let ((id (car spec))) (or (find-library-by (lambda (x) (eq? id (library-id x)))) - (error #f "cannot find library with required spec" spec)))) + (assertion-violation #f "cannot find library with required spec" spec)))) (define label->binding-table (make-eq-hashtable)) @@ -225,9 +225,9 @@ (vis-lib* (map find-library-by-spec/die vis*)) (inv-lib* (map find-library-by-spec/die inv*))) (unless (and (symbol? id) (list? name) (list? ver)) - (error 'install-library "invalid spec with id/name/ver" id name ver)) + (assertion-violation 'install-library "invalid spec with id/name/ver" id name ver)) (when (library-exists? name) - (error 'install-library "library is already installed" name)) + (assertion-violation 'install-library "library is already installed" name)) (let ((lib (make-library id name ver imp-lib* vis-lib* inv-lib* exp-subst exp-env visit-code invoke-code visible?))) @@ -251,10 +251,10 @@ (let ((invoke (library-invoke-state lib))) (when (procedure? invoke) (set-library-invoke-state! lib - (lambda () (error 'invoke "circularity detected" lib))) + (lambda () (assertion-violation 'invoke "circularity detected" lib))) (for-each invoke-library (library-inv* lib)) (set-library-invoke-state! lib - (lambda () (error 'invoke "first invoke did not return" lib))) + (lambda () (assertion-violation 'invoke "first invoke did not return" lib))) (invoke) (set-library-invoke-state! lib #t)))) @@ -263,10 +263,10 @@ (let ((visit (library-visit-state lib))) (when (procedure? visit) (set-library-visit-state! lib - (lambda () (error 'visit "circularity detected" lib))) + (lambda () (assertion-violation 'visit "circularity detected" lib))) (for-each invoke-library (library-vis* lib)) (set-library-visit-state! lib - (lambda () (error 'invoke "first visit did not return" lib))) + (lambda () (assertion-violation 'invoke "first visit did not return" lib))) (visit) (set-library-visit-state! lib #t)))) @@ -288,7 +288,7 @@ (define library-spec (lambda (x) (unless (library? x) - (error 'library-spec "not a library" x)) + (assertion-violation 'library-spec "not a library" x)) (list (library-id x) (library-name x) (library-version x)))) )