From 463e014b30bec2a11e5cebeed98e4cd4c99df451 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Thu, 8 Sep 2016 05:08:05 -0700 Subject: No-op expansion for (inc 0) and (dec 0). * share/txr/stdlib/place.tl (inc, dec): If the delta is zero, don't generate code which calls getter and setter; just generate the place form as the output. --- share/txr/stdlib/place.tl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'share') diff --git a/share/txr/stdlib/place.tl b/share/txr/stdlib/place.tl index dbae39be..0fdbfcc8 100644 --- a/share/txr/stdlib/place.tl +++ b/share/txr/stdlib/place.tl @@ -229,7 +229,7 @@ (defmacro inc (place : (delta 1) :env env) (with-update-expander (getter setter) place env (caseql delta - (0 ^(,setter (,getter))) + (0 place) (1 ^(,setter (succ (,getter)))) (2 ^(,setter (ssucc (,getter)))) (3 ^(,setter (sssucc (,getter)))) @@ -238,7 +238,7 @@ (defmacro dec (place : (delta 1) :env env) (with-update-expander (getter setter) place env (caseql delta - (0 ^(,setter (,getter))) + (0 place) (1 ^(,setter (pred (,getter)))) (2 ^(,setter (ppred (,getter)))) (3 ^(,setter (pppred (,getter)))) -- cgit v1.2.3