From deae97f0dfdf0ea33bba2912f05bb6b350553b94 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Tue, 26 Jan 2021 00:46:57 -0800 Subject: matcher: allow pat/var argument: @[expr var pat] * share/txr/stdlib/match.tl (compile-dwim-predicate-match): Drop redundant bindable check of sym, since compile-var-match checks this. Support third argument which gives a pattern or variable which captures the value from the predicate function, which might be interesting (not just true/false). * tests/011/patmatch.tl: New tests. * txr.1: Documented. --- tests/011/patmatch.tl | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'tests/011') diff --git a/tests/011/patmatch.tl b/tests/011/patmatch.tl index c9326eda..784588ad 100644 --- a/tests/011/patmatch.tl +++ b/tests/011/patmatch.tl @@ -147,3 +147,11 @@ (test (when-match @a..@b '1..2 (list a b)) (1 2)) (test (when-match (rcons @a @b) '(rcons 1 2) (list a b)) (1 2)) + +(test (let ((h #H(() (a 1) (b 2)))) + (when-match @[h x y] 'a (list x y))) + (a 1)) + +(test (let ((h #H(() (a 1) (b 2)))) + (when-match @[h x @(oddp y)] 'a (list x y))) + (a 1)) -- cgit v1.2.3