diff options
-rw-r--r-- | hash.c | 2 | ||||
-rw-r--r-- | share/txr/stdlib/place.tl | 18 |
2 files changed, 12 insertions, 8 deletions
@@ -626,7 +626,7 @@ val sethash(val hash, val key, val value) { val new_p; rplacd(gethash_c(hash, key, mkcloc(new_p)), value); - return new_p; + return value; } val pushhash(val hash, val key, val value) diff --git a/share/txr/stdlib/place.tl b/share/txr/stdlib/place.tl index 81a506a5..29c8e1fa 100644 --- a/share/txr/stdlib/place.tl +++ b/share/txr/stdlib/place.tl @@ -312,15 +312,18 @@ ^((sethash *place-delete-expander* ',name (lambda (,deleter-sym ,place ,body-sym) (tree-bind ,args (cdr ,place) - ,delete-body))))))))) + ,delete-body))))) + ',name)))) (defmacro define-place-macro (name place-destructuring-args . body) (with-gensyms (name-dummy args) - ^(sethash *place-macro* ',name - (lambda (,args) - (mac-param-bind ,args - (,name-dummy ,*place-destructuring-args) - ,args ,*body))))) + ^(progn + (sethash *place-macro* ',name + (lambda (,args) + (mac-param-bind ,args + (,name-dummy ,*place-destructuring-args) + ,args ,*body))) + ',name))) (defplace (sys:var arg) body (getter setter @@ -666,7 +669,8 @@ (lambda (ssetter place body) ^(macrolet ((,ssetter (val) ^(,',set-fun ,*(cdr ',place) ,val))) - ,body)))) + ,body))) + get-fun) (defmacro define-accessor (get-fun set-fun) ^(sys:register-simple-accessor ',get-fun ',set-fun)) |