From a564307a9473a0a5d3b5413d14595aaead145cd4 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sat, 25 Feb 2023 10:42:36 -0500 Subject: Improve partial evaluation of 'if' expressions. --- chickadee/graphics/seagull.scm | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/chickadee/graphics/seagull.scm b/chickadee/graphics/seagull.scm index 70ff46b..0df9b89 100644 --- a/chickadee/graphics/seagull.scm +++ b/chickadee/graphics/seagull.scm @@ -1194,9 +1194,16 @@ (map (lambda (exp) (simplify exp env)) exps)) (define (simplify:if predicate consequent alternate env) - `(if ,(simplify predicate env) - ,(simplify consequent env) - ,(simplify alternate env))) + (define predicate* (simplify predicate env)) + (cond + ((eq? predicate* #t) + (simplify consequent env)) + ((eq? predicate* #f) + (simplify alternate env)) + (else + `(if ,predicate* + ,(simplify consequent env) + ,(simplify alternate env))))) (define (simplify:lambda params body env) `(lambda ,params ,(simplify body env))) -- cgit v1.2.3