~ chicken-core (master) 69fe4239f0160c2dd0a3d54132eb4dbaf8f6ac86
commit 69fe4239f0160c2dd0a3d54132eb4dbaf8f6ac86
Author: felix <felix@call-with-current-continuation.org>
AuthorDate: Thu Jun 23 10:48:12 2011 +0200
Commit: felix <felix@call-with-current-continuation.org>
CommitDate: Thu Jun 23 10:48:12 2011 +0200
generalized introduction of temporaries in rewrite-rule, also allows backrefs; rewrite fp-div into fp/? (new); updated test-files
diff --git a/c-platform.scm b/c-platform.scm
index d1a0d253..3aba549e 100644
--- a/c-platform.scm
+++ b/c-platform.scm
@@ -133,7 +133,7 @@
(define default-extended-bindings
'(bitwise-and alist-cons xcons
bitwise-ior bitwise-xor bitwise-not add1 sub1 fx+ fx- fx* fx/
- fx+? fx-? fx*? fx/? fxmod o
+ fx+? fx-? fx*? fx/? fxmod o fp/?
fx= fx> fx< fx>= fx<= fixnum? fxneg fxmax fxmin identity fp+ fp- fp* fp/ fpmin fpmax fpneg
fp> fp< fp= fp>= fp<= fxand fxnot fxior fxxor fxshr fxshl bit-set? fxodd? fxeven?
fpfloor fpceiling fptruncate fpround fpsin fpcos fptan fpasin fpacos fpatan
@@ -709,6 +709,7 @@
(rewrite 'fp- 16 2 "C_a_i_flonum_difference" #f words-per-flonum)
(rewrite 'fp* 16 2 "C_a_i_flonum_times" #f words-per-flonum)
(rewrite 'fp/ 16 2 "C_a_i_flonum_quotient" #f words-per-flonum)
+(rewrite 'fp/? 16 2 "C_a_i_flonum_quotient_checked" #f words-per-flonum)
(rewrite 'fpneg 16 1 "C_a_i_flonum_negate" #f words-per-flonum)
(rewrite 'exp 16 1 "C_a_i_exp" #t words-per-flonum)
diff --git a/chicken.h b/chicken.h
index fbf3d0dd..2f5f0474 100644
--- a/chicken.h
+++ b/chicken.h
@@ -1799,6 +1799,7 @@ C_fctexport C_word C_fcall C_i_o_fixnum_and(C_word x, C_word y) C_regparm;
C_fctexport C_word C_fcall C_i_o_fixnum_ior(C_word x, C_word y) C_regparm;
C_fctexport C_word C_fcall C_i_o_fixnum_xor(C_word x, C_word y) C_regparm;
C_fctexport C_word C_fcall C_a_i_flonum_round_proper(C_word **a, int c, C_word n) C_regparm;
+C_fctexport C_word C_fcall C_a_i_flonum_quotient_checked(C_word **ptr, int c, C_word n1, C_word n2) C_regparm;
C_fctexport C_word C_fcall C_i_getprop(C_word sym, C_word prop, C_word def) C_regparm;
C_fctexport C_word C_fcall C_putprop(C_word **a, C_word sym, C_word prop, C_word val) C_regparm;
C_fctexport C_word C_fcall C_i_get_keyword(C_word key, C_word args, C_word def) C_regparm;
diff --git a/library.scm b/library.scm
index 79578cc4..4249fff6 100644
--- a/library.scm
+++ b/library.scm
@@ -771,6 +771,10 @@ EOF
(fp-check-flonums x y 'fp/)
(##core#inline_allocate ("C_a_i_flonum_quotient" 4) x y) )
+(define (fp/? x y) ; undocumented
+ (fp-check-flonums x y 'fp/?)
+ (##core#inline_allocate ("C_a_i_flonum_quotient_checked" 4) x y) )
+
(define (fp= x y)
(fp-check-flonums x y 'fp=)
(##core#inline "C_flonum_equalp" x y) )
diff --git a/runtime.c b/runtime.c
index 30dbc70f..9a45a44b 100644
--- a/runtime.c
+++ b/runtime.c
@@ -9299,3 +9299,13 @@ C_filter_heap_objects(C_word c, C_word closure, C_word k, C_word func, C_word ve
C_fromspace_top = C_fromspace_limit; /* force major GC */
C_reclaim((void *)filter_heap_objects_2, NULL);
}
+
+
+C_regparm C_word C_fcall
+C_a_i_flonum_quotient_checked(C_word **ptr, int c, C_word n1, C_word n2)
+{
+ double n3 = C_flonum_magnitude(n2);
+
+ if(n3 == 0.0) barf(C_DIVISION_BY_ZERO_ERROR, "fp/?");
+ else return C_flonum(ptr, C_flonum_magnitude(n1) / n3);
+}
diff --git a/scrutinizer.scm b/scrutinizer.scm
index d42ffd00..b1198940 100755
--- a/scrutinizer.scm
+++ b/scrutinizer.scm
@@ -1139,12 +1139,19 @@
(else #f))))
(define (specialize-node! node template)
- (let ((args (cdr (node-subexpressions node))))
+ (let ((args (cdr (node-subexpressions node)))
+ (env '()))
(define (subst x)
(cond ((and (vector? x)
- (= 1 (vector-length x))
- (integer? (vector-ref x 0)))
- (list-ref args (sub1 (vector-ref x 0))))
+ (= 1 (vector-length x)) )
+ (let ((y (vector-ref x 0)))
+ (cond ((integer? y) (list-ref args (sub1 y)))
+ ((symbol? y)
+ (cond ((assq y env) => cdr)
+ (else
+ (let ((var (gensym y)))
+ (set! env (alist-cons y var env))
+ var)))))))
((and (vector? x)
(= 2 (vector-length x))
(integer? (vector-ref x 0))
diff --git a/support.scm b/support.scm
index fe1a03cb..05246b4f 100644
--- a/support.scm
+++ b/support.scm
@@ -471,7 +471,7 @@
(define (qnode const) (make-node 'quote (list const) '()))
(define (build-node-graph exp)
- (let ([count 0])
+ (let ((count 0))
(define (walk x)
(cond ((symbol? x) (varnode x))
((node? x) x)
@@ -495,13 +495,14 @@
[body (caddr x)] )
(if (null? bs)
(walk body)
- (make-node 'let
- (map (lambda (v)
- ;; for temporaries introduced by specialization
- (if (eq? '#:tmp v) (gensym) v))
- (unzip1 bs))
- (append (map (lambda (b) (walk (cadr b))) (cadr x))
- (list (walk body)) ) ) ) ) )
+ (make-node
+ 'let
+ (map (lambda (v)
+ ;; for temporaries introduced by specialization
+ (if (eq? '#:tmp v) (gensym) v)) ; OBSOLETE
+ (unzip1 bs))
+ (append (map (lambda (b) (walk (cadr b))) (cadr x))
+ (list (walk body)) ) ) ) ) )
((lambda ##core#lambda)
(make-node 'lambda (list (cadr x)) (list (walk (caddr x)))))
((##core#the)
diff --git a/tests/scrutiny-2.expected b/tests/scrutiny-2.expected
index 3596b460..b0b64e38 100644
--- a/tests/scrutiny-2.expected
+++ b/tests/scrutiny-2.expected
@@ -1,69 +1,69 @@
Note: at toplevel:
- pair?: in procedure call to `pair?', the predicate is called with an argument of type `pair' and will always return true
+ in procedure call to `pair?', the predicate is called with an argument of type `pair' and will always return true
Note: at toplevel:
- pair?: in procedure call to `pair?', the predicate is called with an argument of type `null' and will always return false
+ in procedure call to `pair?', the predicate is called with an argument of type `null' and will always return false
Note: at toplevel:
- pair?: in procedure call to `pair?', the predicate is called with an argument of type `fixnum' and will always return false
+ in procedure call to `pair?', the predicate is called with an argument of type `fixnum' and will always return false
Note: at toplevel:
- pair?: in procedure call to `pair?', the predicate is called with an argument of type `float' and will always return false
+ in procedure call to `pair?', the predicate is called with an argument of type `float' and will always return false
Note: at toplevel:
- list?: in procedure call to `list?', the predicate is called with an argument of type `list' and will always return true
+ in procedure call to `list?', the predicate is called with an argument of type `list' and will always return true
Note: at toplevel:
- list?: in procedure call to `list?', the predicate is called with an argument of type `fixnum' and will always return false
+ in procedure call to `list?', the predicate is called with an argument of type `fixnum' and will always return false
Note: at toplevel:
- list?: in procedure call to `list?', the predicate is called with an argument of type `float' and will always return false
+ in procedure call to `list?', the predicate is called with an argument of type `float' and will always return false
Note: at toplevel:
- null?: in procedure call to `null?', the predicate is called with an argument of type `null' and will always return true
+ in procedure call to `null?', the predicate is called with an argument of type `null' and will always return true
Note: at toplevel:
- null?: in procedure call to `null?', the predicate is called with an argument of type `pair' and will always return false
+ in procedure call to `null?', the predicate is called with an argument of type `pair' and will always return false
Note: at toplevel:
- null?: in procedure call to `null?', the predicate is called with an argument of type `fixnum' and will always return false
+ in procedure call to `null?', the predicate is called with an argument of type `fixnum' and will always return false
Note: at toplevel:
- null?: in procedure call to `null?', the predicate is called with an argument of type `float' and will always return false
+ in procedure call to `null?', the predicate is called with an argument of type `float' and will always return false
Note: at toplevel:
- fixnum?: in procedure call to `fixnum?', the predicate is called with an argument of type `fixnum' and will always return true
+ in procedure call to `fixnum?', the predicate is called with an argument of type `fixnum' and will always return true
Note: at toplevel:
- fixnum?: in procedure call to `fixnum?', the predicate is called with an argument of type `float' and will always return false
+ in procedure call to `fixnum?', the predicate is called with an argument of type `float' and will always return false
Note: at toplevel:
- exact?: in procedure call to `exact?', the predicate is called with an argument of type `fixnum' and will always return true
+ in procedure call to `exact?', the predicate is called with an argument of type `fixnum' and will always return true
Note: at toplevel:
- exact?: in procedure call to `exact?', the predicate is called with an argument of type `float' and will always return false
+ in procedure call to `exact?', the predicate is called with an argument of type `float' and will always return false
Note: at toplevel:
- flonum?: in procedure call to `flonum?', the predicate is called with an argument of type `float' and will always return true
+ in procedure call to `flonum?', the predicate is called with an argument of type `float' and will always return true
Note: at toplevel:
- flonum?: in procedure call to `flonum?', the predicate is called with an argument of type `fixnum' and will always return false
+ in procedure call to `flonum?', the predicate is called with an argument of type `fixnum' and will always return false
Note: at toplevel:
- inexact?: in procedure call to `inexact?', the predicate is called with an argument of type `float' and will always return true
+ in procedure call to `inexact?', the predicate is called with an argument of type `float' and will always return true
Note: at toplevel:
- inexact?: in procedure call to `inexact?', the predicate is called with an argument of type `fixnum' and will always return false
+ in procedure call to `inexact?', the predicate is called with an argument of type `fixnum' and will always return false
Note: at toplevel:
- number?: in procedure call to `number?', the predicate is called with an argument of type `fixnum' and will always return true
+ in procedure call to `number?', the predicate is called with an argument of type `fixnum' and will always return true
Note: at toplevel:
- number?: in procedure call to `number?', the predicate is called with an argument of type `float' and will always return true
+ in procedure call to `number?', the predicate is called with an argument of type `float' and will always return true
Note: at toplevel:
- number?: in procedure call to `number?', the predicate is called with an argument of type `number' and will always return true
+ in procedure call to `number?', the predicate is called with an argument of type `number' and will always return true
Note: at toplevel:
- number?: in procedure call to `number?', the predicate is called with an argument of type `null' and will always return false
+ in procedure call to `number?', the predicate is called with an argument of type `null' and will always return false
diff --git a/tests/scrutiny-tests.scm b/tests/scrutiny-tests.scm
index dea73fe7..dfa87ba6 100644
--- a/tests/scrutiny-tests.scm
+++ b/tests/scrutiny-tests.scm
@@ -101,4 +101,4 @@
(string-append (the pair (substring x 0 10))) ; 1
(the * (values 1 2)) ; 1 + 2
(the * (values)) ; 3
- (the fixnum (* x y))) ; nothing
+ (the fixnum (* x y))) ; nothing (but warns about "x" being string)
diff --git a/tests/scrutiny.expected b/tests/scrutiny.expected
index 47294d4a..9325c771 100644
--- a/tests/scrutiny.expected
+++ b/tests/scrutiny.expected
@@ -43,7 +43,7 @@ Warning: at toplevel:
expected in `let' binding of `g8' a single result, but were given 2 results
Warning: at toplevel:
- g89: in procedure call to `g89', expected a value of type `(procedure () *)', but was given a value of type `fixnum'
+ in procedure call to `g89', expected a value of type `(procedure () *)', but was given a value of type `fixnum'
Warning: in toplevel procedure `foo2':
scrutiny-tests.scm:57: in procedure call to `string-append', expected argument #1 of type `string', but was given an argument of type `number'
@@ -66,7 +66,7 @@ Warning: at toplevel:
Warning: in toplevel procedure `foo9':
scrutiny-tests.scm:97: in procedure call to `+', expected argument #1 of type `number', but was given an argument of type `string'
-Warning: in toplevel procedure `foo10':
+Note: in toplevel procedure `foo10':
expression returns a result of type `string', but is declared to return `pair', which is not a subtype
Warning: in toplevel procedure `foo10':
@@ -75,7 +75,7 @@ Warning: in toplevel procedure `foo10':
Warning: in toplevel procedure `foo10':
expression returns 2 values but is declared to have a single result
-Warning: in toplevel procedure `foo10':
+Note: in toplevel procedure `foo10':
expression returns a result of type `fixnum', but is declared to return `*', which is not a subtype
Warning: in toplevel procedure `foo10':
@@ -85,3 +85,13 @@ Warning: in toplevel procedure `foo10':
scrutiny-tests.scm:104: in procedure call to `*', expected argument #1 of type `number', but was given an argument of type `string'
Warning: redefinition of standard binding: car
+
+Warning: (in k161) constant-folding expression results in error: "bad argument type": (+ (quote a) (quote b))
+
+Warning: (in k171) constant-folding expression results in error: "bad argument type - not a string": (string-append (quote 99) (quote "abc"))
+
+Warning: (in k171) constant-folding expression results in error: "bad argument type - not a string": (string-append (quote 99) (quote "abc"))
+
+Warning: (in k171) constant-folding expression results in error: "bad argument type - not a string": (string-append (quote 99) (quote "abc"))
+
+Warning: (in k171) constant-folding expression results in error: "bad argument type - not a string": (string-append (quote 99) (quote "abc"))
diff --git a/types.db b/types.db
index 62cd4746..e39749e0 100644
--- a/types.db
+++ b/types.db
@@ -29,9 +29,9 @@
; - numeric types are disjoint, "fixnum" or "float" will not match "number" in the
; rewrite rules
; - for a description of the type-specifier syntax, see "scrutinizer.scm" (top of file)
-; - in templates, "#(INDEX)" refers to the INDEXth argument (starting from 1)
-; - in templates "(let ((#:tmp X)) ...)" binds X to a temporary variable, you can not
-; refer to this variable inside the template
+; - in templates, "#(INTEGER)" refers to the INTEGERth argument (starting from 1)
+; - in templates "#(SYMBOL)" binds X to a temporary gensym'd variable, further references
+; to "#(SYMBOL)" allow backreferences to this generated identifier
; - a type of the form "(procedure! ...)" is internally treated like "(procedure ..."
; but declares the procedure as "argument-type enforcing"
; - a type of the form "(procedure? TYPE ...)" is internally treated like "(procedure ..."
@@ -42,7 +42,7 @@
;; scheme
(not (procedure not (*) boolean)
- (((not boolean)) (let ((#:tmp #(1))) '#t)))
+ (((not boolean)) (let ((#(tmp) #(1))) '#t)))
(boolean? (procedure? boolean boolean? (*) boolean))
@@ -122,7 +122,7 @@
;;XXX predicate?
(integer? (procedure integer? (*) boolean)
- ((fixnum) (let ((#:tmp #(1))) '#t))
+ ((fixnum) (let ((#(tmp) #(1))) '#t))
((float) (##core#inline "C_u_i_fpintegerp" #(1))))
(exact? (procedure? fixnum exact? (*) boolean))
@@ -132,7 +132,7 @@
;;XXX predicate?
(rational? (procedure rational? (*) boolean)
- ((fixnum) (let ((#:tmp #(1))) '#t)))
+ ((fixnum) (let ((#(tmp) #(1))) '#t)))
(zero? (procedure! zero? (number) boolean)
((fixnum) (eq? #(1) '0))
@@ -213,16 +213,16 @@
(/ (procedure! / (number #!rest number) number)
((float fixnum) (float)
(##core#inline_allocate
- ("C_a_i_flonum_quotient" 4)
+ ("C_a_i_flonum_quotient_checked" 4)
#(1)
(##core#inline_allocate ("C_a_i_fix_to_flo" 4) #(2))))
((fixnum float) (float)
(##core#inline_allocate
- ("C_a_i_flonum_quotient" 4)
+ ("C_a_i_flonum_quotient_checked" 4)
(##core#inline_allocate ("C_a_i_fix_to_flo" 4) #(1))
#(2)))
((float float) (float)
- (##core#inline_allocate ("C_a_i_flonum_quotient" 4) #(1) #(2))))
+ (##core#inline_allocate ("C_a_i_flonum_quotient_checked" 4) #(1) #(2))))
(= (procedure! = (#!rest number) boolean)
((fixnum fixnum) (eq? #(1) #(2)))
@@ -487,7 +487,7 @@
(char-ready? (procedure! char-ready? (#!optional port) boolean))
(imag-part (procedure! imag-part (number) number)
- ((or fixnum float number) (let ((#:tmp #(1))) '0)))
+ ((or fixnum float number) (let ((#(tmp) #(1))) '0)))
(real-part (procedure! real-part (number) number)
((or fixnum float number) #(1)))
@@ -502,7 +502,7 @@
((fixnum) (fixnum) #(1)))
(denominator (procedure! denominator (number) number)
- ((fixnum) (fixnum) (let ((#:tmp #(1))) '1)))
+ ((fixnum) (fixnum) (let ((#(tmp) #(1))) '1)))
(scheme-report-environment (procedure! scheme-report-environment (#!optional fixnum) *))
(null-environment (procedure! null-environment (#!optional fixnum) *))
@@ -849,44 +849,44 @@
((pointer) #(1)))
(##sys#check-blob (procedure! ##sys#check-blob (blob #!optional *) *)
- ((blob) (let ((#:tmp #(1))) '#t))
- ((blob *) (let ((#:tmp #(1))) '#t)))
+ ((blob) (let ((#(tmp) #(1))) '#t))
+ ((blob *) (let ((#(tmp) #(1))) '#t)))
(##sys#check-pair (procedure! ##sys#check-pair (pair #!optional *) *)
- ((pair) (let ((#:tmp #(1))) '#t))
- ((pair *) (let ((#:tmp #(1))) '#t)))
+ ((pair) (let ((#(tmp) #(1))) '#t))
+ ((pair *) (let ((#(tmp) #(1))) '#t)))
(##sys#check-list (procedure! ##sys#check-list (list #!optional *) *)
- (((or null pair list)) (let ((#:tmp #(1))) '#t))
- (((or null pair list) *) (let ((#:tmp #(1))) '#t)))
+ (((or null pair list)) (let ((#(tmp) #(1))) '#t))
+ (((or null pair list) *) (let ((#(tmp) #(1))) '#t)))
(##sys#check-string (procedure! ##sys#check-string (string #!optional *) *)
- ((string) (let ((#:tmp #(1))) '#t))
- ((string) * (let ((#:tmp #(1))) '#t)))
+ ((string) (let ((#(tmp) #(1))) '#t))
+ ((string) * (let ((#(tmp) #(1))) '#t)))
(##sys#check-number (procedure! ##sys#check-number (number #!optional *) *)
- ((number) (let ((#:tmp #(1))) '#t))
- ((number *) (let ((#:tmp #(1))) '#t)))
+ ((number) (let ((#(tmp) #(1))) '#t))
+ ((number *) (let ((#(tmp) #(1))) '#t)))
(##sys#check-exact (procedure! ##sys#check-exact (fixnum #!optional *) *)
- ((fixnum) (let ((#:tmp #(1))) '#t))
- ((fixnum *) (let ((#:tmp #(1))) '#t)))
+ ((fixnum) (let ((#(tmp) #(1))) '#t))
+ ((fixnum *) (let ((#(tmp) #(1))) '#t)))
(##sys#check-inexact (procedure! ##sys#check-inexact (float #!optional *) *)
- ((float) (let ((#:tmp #(1))) '#t))
- ((float *) (let ((#:tmp #(1))) '#t)))
+ ((float) (let ((#(tmp) #(1))) '#t))
+ ((float *) (let ((#(tmp) #(1))) '#t)))
(##sys#check-symbol (procedure! ##sys#check-symbol (symbol #!optional *) *)
- ((symbol) (let ((#:tmp #(1))) '#t))
- ((symbol *) (let ((#:tmp #(1))) '#t)))
+ ((symbol) (let ((#(tmp) #(1))) '#t))
+ ((symbol *) (let ((#(tmp) #(1))) '#t)))
(##sys#check-vector (procedure! ##sys#check-vector (vector #!optional *) *)
- ((vector) (let ((#:tmp #(1))) '#t))
- ((vector *) (let ((#:tmp #(1))) '#t)))
+ ((vector) (let ((#(tmp) #(1))) '#t))
+ ((vector *) (let ((#(tmp) #(1))) '#t)))
(##sys#check-char (procedure! ##sys#check-char (char #!optional *) *)
- ((char) (let ((#:tmp #(1))) '#t))
- ((char *) (let ((#:tmp #(1))) '#t)))
+ ((char) (let ((#(tmp) #(1))) '#t))
+ ((char *) (let ((#(tmp) #(1))) '#t)))
(##sys#check-boolean (procedure! ##sys#check-boolean (boolean #!optional *) *)
- ((boolean) (let ((#:tmp #(1))) '#t))
- ((boolean *) (let ((#:tmp #(1))) '#t)))
+ ((boolean) (let ((#(tmp) #(1))) '#t))
+ ((boolean *) (let ((#(tmp) #(1))) '#t)))
(##sys#check-locative (procedure! ##sys#check-locative (locative #!optional *) *)
- ((locative) (let ((#:tmp #(1))) '#t))
- ((locative *) (let ((#:tmp #(1))) '#t)))
+ ((locative) (let ((#(tmp) #(1))) '#t))
+ ((locative *) (let ((#(tmp) #(1))) '#t)))
(##sys#check-closure (procedure! ##sys#check-closure (procedure #!optional *) *)
- ((procedure) (let ((#:tmp #(1))) '#t))
- ((procedure *) (let ((#:tmp #(1))) '#t)))
+ ((procedure) (let ((#(tmp) #(1))) '#t))
+ ((procedure *) (let ((#(tmp) #(1))) '#t)))
;; data-structures
@@ -898,11 +898,11 @@
(always? (procedure always? (#!rest) boolean))
(any? (procedure any? (*) boolean)
- ((*) (let ((#:tmp #(1))) '#t)))
+ ((*) (let ((#(tmp) #(1))) '#t)))
(atom? (procedure atom? (*) boolean)
- ((pair) (let ((#:tmp #(1))) '#f))
- (((not (or pair list))) (let ((#:tmp #(1))) '#t)))
+ ((pair) (let ((#(tmp) #(1))) '#f))
+ (((not (or pair list))) (let ((#(tmp) #(1))) '#t)))
(binary-search (procedure! binary-search (vector (procedure (*) *)) *))
(butlast (procedure! butlast (pair) list))
@@ -928,7 +928,7 @@
(never? (procedure never? (#!rest) boolean))
(none? (procedure none? (*) boolean)
- ((*) (let ((#:tmp #(1))) '#f)))
+ ((*) (let ((#(tmp) #(1))) '#f)))
(o (procedure! o (#!rest (procedure (*) *)) (procedure (*) *)))
@@ -1179,7 +1179,7 @@
((pointer) (##core#inline "C_pointer_to_object" #(1))))
(pointer-like? (procedure pointer-like? (*) boolean)
- (((or pointer locative procedure port)) (let ((#:tmp #(1))) '#t)))
+ (((or pointer locative procedure port)) (let ((#(tmp) #(1))) '#t)))
(pointer-f32-ref (procedure! pointer-f32-ref (pointer) number))
(pointer-f32-set! (procedure! pointer-f32-set! (pointer number) undefined))
@@ -1204,7 +1204,7 @@
(pointer-s8-set! (procedure! pointer-s8-set! (pointer fixnum) undefined))
(pointer-tag (procedure! pointer-tag ((or pointer locative procedure port)) (or boolean number))
- (((or locative procedure port)) (let ((#:tmp #(1))) '#f)))
+ (((or locative procedure port)) (let ((#(tmp) #(1))) '#f)))
(pointer-u16-ref (procedure! pointer-u16-ref (pointer) fixnum))
(pointer-u16-set! (procedure! pointer-u16-set! (pointer fixnum) undefined))
@@ -1499,7 +1499,7 @@
(circular-list (procedure circular-list (#!rest) list))
(circular-list? (procedure circular-list? (*) boolean)
- ((null) (let ((#:tmp #(1))) '#f)))
+ ((null) (let ((#(tmp) #(1))) '#f)))
(concatenate (procedure! concatenate (list) list))
(concatenate! (procedure! concatenate! (list) list))
@@ -1556,13 +1556,13 @@
(ninth (procedure! ninth (pair) *))
(not-pair? (procedure not-pair? (*) boolean)
- ((pair) (let ((#:tmp #(1))) '#f))
- (((not (or pair list))) (let ((#:tmp #(1))) '#t)))
+ ((pair) (let ((#(tmp) #(1))) '#f))
+ (((not (or pair list))) (let ((#(tmp) #(1))) '#t)))
(null-list? (procedure! null-list? (list) boolean)
- ((pair) (let ((#:tmp #(1))) '#f))
- ((list) (let ((#:tmp #(1))) '#f))
- ((null) (let ((#:tmp #(1))) '#t)))
+ ((pair) (let ((#(tmp) #(1))) '#f))
+ ((list) (let ((#(tmp) #(1))) '#f))
+ ((null) (let ((#(tmp) #(1))) '#t)))
(pair-fold (procedure! pair-fold (procedure * list #!rest list) *))
(pair-fold-right (procedure! pair-fold-right (procedure * list #!rest list) *))
@@ -1571,7 +1571,7 @@
(partition! (procedure! partition! ((procedure (*) *) list) list list))
(proper-list? (procedure proper-list? (*) boolean)
- ((null) (let ((#:tmp #(1))) '#t)))
+ ((null) (let ((#(tmp) #(1))) '#t)))
(reduce (procedure! reduce ((procedure (* *) *) * list) *))
(reduce-right (procedure! reduce-right ((procedure (* *) *) * list) *))
Trap