Thanks, mejja.
;; True iff evaluation of expression has no side effects.
(define (expression/effect-free? expression)
(cond ((access? expression)
- (expresssion/effect-free? (access/environment expresssion)))
+ (expression/effect-free? (access/environment expression)))
((combination? expression)
(and (for-all? (combination/operands expression) expression/effect-free?)
(cond ((and (expression/never-false? integrated-predicate)
(noisy-test sf:enable-disjunction-folding? "Folding constant true disjunction"))
;; (or <exp1> <exp2>) => <exp1> if <exp1> is never false
- predicate)
+ integrated-predicate)
((and (expression/call-to-not? integrated-predicate)
(noisy-test sf:enable-disjunction-inversion? "Inverting disjunction"))
(else (dont-integrate))))
((IGNORE)
- (ignored-variable-warning (variable/name variable))
+ (ignored-variable-warning (variable/name name))
(dont-integrate))
((INTEGRATE INTEGRATE-OPERATOR)
((null? optional)
(match-rest environment (procedure/rest procedure) remaining-operands))
;; impossible?
- (else (error "INTERNAL ERROR: Required argument list is improper"
- required))))
+ (else (error "INTERNAL ERROR: Optional argument list is improper"
+ optional))))
(define (listify-tail operands)
(fold-right