summaryrefslogtreecommitdiffstats
path: root/share
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
commit463e014b30bec2a11e5cebeed98e4cd4c99df451 (patch)
tree53f8f481a43b0fe515bab2ec99c257399363ed8a /share
parente3aa3aac033df459debee3746feb437a506bc0f3 (diff)
downloadtxr-463e014b30bec2a11e5cebeed98e4cd4c99df451.tar.gz
txr-463e014b30bec2a11e5cebeed98e4cd4c99df451.tar.bz2
txr-463e014b30bec2a11e5cebeed98e4cd4c99df451.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.
Diffstat (limited to 'share')
-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))))