summaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
Diffstat (limited to 'share')
-rw-r--r--share/txr/stdlib/place.tl8
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]