summaryrefslogtreecommitdiffstats
path: root/stdlib
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib')
-rw-r--r--stdlib/compiler.tl11
1 files changed, 9 insertions, 2 deletions
diff --git a/stdlib/compiler.tl b/stdlib/compiler.tl
index 2ba6626b..0b271cfd 100644
--- a/stdlib/compiler.tl
+++ b/stdlib/compiler.tl
@@ -350,7 +350,7 @@
(defvarl %functional-funs%
'(chain chand juxt andf orf notf iff iffi dup flipargs if or and
- progn prog1 prog2 retf apf ipf callf mapf tf nilf umethod uslot))
+ progn prog1 prog2 retf apf ipf callf mapf tf umethod uslot))
(defvarl %functional% (hash-list %functional-funs% :eq-based))
@@ -1390,7 +1390,14 @@
(set form (rlcp ^(,bin ,a ,b) form)))
((- @a)
(set form (rlcp ^(neg ,a) form)))
- ((@(or identity + * min max logior logand) @a)
+ ((@(or ignore nilf) . @args)
+ (if (eql sym 'ignore)
+ (each ((a args))
+ (if (bindable a)
+ env.(lookup-var a t))))
+ (return-from comp-fun-form me.(compile oreg env
+ ^(progn ,*args nil))))
+ ((@(or identity use + * min max logior logand) @a)
(return-from comp-fun-form me.(compile oreg env a)))))
(when (plusp olev)