diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2015-07-21 20:37:59 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2015-07-21 20:37:59 -0700 |
commit | 701d5ff8c6a2d4ca6023be345faf4f085db6c689 (patch) | |
tree | abe7bc64bb157ddbba61b4dedf37b795912eeade /share | |
parent | dd270e9350901f7b750364d167dcd880038cb86f (diff) | |
download | txr-701d5ff8c6a2d4ca6023be345faf4f085db6c689.tar.gz txr-701d5ff8c6a2d4ca6023be345faf4f085db6c689.tar.bz2 txr-701d5ff8c6a2d4ca6023be345faf4f085db6c689.zip |
* share/txr/stdlib/place.tl (defplace cdr): Change deletion
semantics so that (del (cdr x)) is symmetric with (del (car x)).
* txr.1: Update documentation.
Diffstat (limited to 'share')
-rw-r--r-- | share/txr/stdlib/place.tl | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/share/txr/stdlib/place.tl b/share/txr/stdlib/place.tl index f7e468cf..1d748d99 100644 --- a/share/txr/stdlib/place.tl +++ b/share/txr/stdlib/place.tl @@ -327,7 +327,11 @@ ^(macrolet ((,ssetter (val) ^(sys:rplacd ,',cell ,val))) ,body)) (deleter - ^(macrolet ((,deleter () ^(zap (cdr ,',cell)))) + ^(macrolet ((,deleter () + (with-gensyms (tmp) + (with-update-expander (cgetter csetter) ',cell nil + ^(let ((,tmp (,cgetter))) + (prog1 (cdr ,tmp) (,csetter (car ,tmp)))))))) ,body))) (defplace (vecref vector index :whole args) body |