diff options
Diffstat (limited to 'share')
-rw-r--r-- | share/txr/stdlib/match.tl | 12 |
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))))) |