summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2016-09-08 05:08:05 -0700
committerKaz Kylheku <kaz@kylheku.com>2016-09-08 05:08:05 -0700
commit59117b0090c2ff590319f757c311d6860141c7d6 (patch)
tree53f8f481a43b0fe515bab2ec99c257399363ed8a
parent0975d1ffb260b8f83b2098971a8c6515ace5f616 (diff)
downloadtxr-59117b0090c2ff590319f757c311d6860141c7d6.tar.gz
txr-59117b0090c2ff590319f757c311d6860141c7d6.tar.bz2
txr-59117b0090c2ff590319f757c311d6860141c7d6.zip
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.
-rw-r--r--share/txr/stdlib/place.tl4
1 files changed, 2 insertions, 2 deletions
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))))