diff options
Diffstat (limited to 'share')
-rw-r--r-- | share/txr/stdlib/place.tl | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/share/txr/stdlib/place.tl b/share/txr/stdlib/place.tl index 1ea1b95c..2e15118b 100644 --- a/share/txr/stdlib/place.tl +++ b/share/txr/stdlib/place.tl @@ -81,11 +81,15 @@ (makunbound ',',place-expr)))) ,*op-body)) + (defun sys:get-place-macro (sym) + (or [*place-macro* sym] + (progn (sys:try-load sym) [*place-macro* sym]))) + (defun sys:pl-expand (unex-place env) (while t (let ((place unex-place)) - (let ((pm-expander [*place-macro* (if (consp unex-place) - (car unex-place))])) + (let ((pm-expander (sys:get-place-macro (if (consp unex-place) + (car unex-place))))) (when pm-expander (sys:setq place (sys:set-macro-ancestor [pm-expander unex-place] |