summaryrefslogtreecommitdiffstats
path: root/stdlib
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib')
-rw-r--r--stdlib/op.tl12
1 files changed, 11 insertions, 1 deletions
diff --git a/stdlib/op.tl b/stdlib/op.tl
index a3a0135e..b443a2d2 100644
--- a/stdlib/op.tl
+++ b/stdlib/op.tl
@@ -172,6 +172,13 @@
;; no cadr here to avoid circular autoload
^[sys:apply ,(car (cdr syntax-2))
(append ,rest-sym (list ,*fargs-l1))]))
+ ((and (eq sym 'lop1) fargs)
+ (let ((fargs-l1 (mapcar (lambda (farg)
+ ^(sys:l1-val ,farg))
+ fargs))
+ (arg1 (sys:ensure-op-arg ctx 1)))
+ ;; no cadr here to avoid circular autoload
+ ^[,(car (cdr syntax-2)) ,arg1 ,*fargs-l1]))
(metas syntax-2)
((eq sym 'do)
(let ((arg1 (sys:ensure-op-arg ctx 1)))
@@ -199,6 +206,9 @@
(defmacro lop (:form f :env e . args)
(sys:op-expand f e args))
+(defmacro lop1 (:form f :env e . args)
+ (sys:op-expand f e args))
+
(defmacro ldo (op . args)
^(do ,op @1 ,*args))
@@ -243,7 +253,7 @@
(cons c (sys:opip-expand e opsym dosym rest))
(let ((sym (car c)))
(cond
- ((memq sym '(dwim uref qref op do lop ldo ap ip ado ido ret aret))
+ ((memq sym '(dwim uref qref op do lop lop1 ldo ap ip ado ido ret aret))
(cons c (sys:opip-expand e opsym dosym rest)))
((sys:opip-single-let-p c)
(tree-bind (t sym) c