summaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
Diffstat (limited to 'share')
-rw-r--r--share/txr/stdlib/match.tl12
1 files changed, 4 insertions, 8 deletions
diff --git a/share/txr/stdlib/match.tl b/share/txr/stdlib/match.tl
index ea0134fc..f99a8fe6 100644
--- a/share/txr/stdlib/match.tl
+++ b/share/txr/stdlib/match.tl
@@ -446,15 +446,11 @@
obj-var obj-var
guard-chain (list dj-guard)))))
-(defun compile-and-match (par-pat obj-var var-list)
- (mac-param-bind *match-form* (op . pats) par-pat
- (let* ((var-lists (mapcar (ret (copy var-list)) pats))
- (par-matches (mapcar (op compile-match @1 obj-var @2)
- pats var-lists)))
- (each ((vl var-lists))
- var-list.(merge vl))
+(defun compile-and-match (and-pat obj-var var-list)
+ (mac-param-bind *match-form* (op . pats) and-pat
+ (let* ((par-matches (mapcar (lop compile-match obj-var var-list) pats)))
(new compiled-match
- pattern par-pat
+ pattern and-pat
obj-var obj-var
guard-chain (mappend .guard-chain par-matches)))))