diff options
Diffstat (limited to 'stdlib')
-rw-r--r-- | stdlib/op.tl | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/stdlib/op.tl b/stdlib/op.tl index 7dffa6ee..236d0c25 100644 --- a/stdlib/op.tl +++ b/stdlib/op.tl @@ -54,9 +54,10 @@ ((eq x 'sys:var) (or (integerp y) (eq y 'rest)))))))) -(defun sys:op-rec-p (expr) - (tree-case expr - ((x (y . r)) (and (eq x 'sys:expr) (eq y 'usr:rec))))) +(defun sys:op-rec-p (exp) + (or (tree-case exp + ((x (y . r)) (and (eq x 'sys:expr) (eq y 'usr:rec)))) + (equal exp '(sys:var usr:rec)))) (defun sys:op-ensure-rec (ctx : recvar) (when recvar @@ -70,8 +71,7 @@ (cond ((and (slot ctx 'up) (or (sys:op-meta-p arg) - (sys:op-rec-p arg) - (equal arg '(sys:var usr:rec)))) + (sys:op-rec-p arg))) (let ((up (slot ctx 'up))) (slotset up 'nested t) ^(,(slot up 'meta) (quote ,arg)))) @@ -84,7 +84,7 @@ (unless (integerp arg) (sys:setq arg 0)) (sys:ensure-op-arg ,ctx arg)) - ((equal f '(sys:var usr:rec)) + ((sys:op-rec-p f) (sys:op-ensure-rec ,ctx t)) (t f))) ,*(if do-nested-metas |