From b720b5468daf5498ab470293563e65fdeedbb959 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Fri, 15 Jan 2021 01:50:56 -0800 Subject: matcher: allow omitted variabel in predicates For instance @(oddp) instead of @(oddp x) to require an element to satisfy oddp without capturing it to a variable. * share/txr/stdlib/match.tl (compile-predicate-match): Make the symbolic argument optional, defaulting to nil. A nil symbol is already treated as pseudo-variable which consumes an item without binding to a variable. --- share/txr/stdlib/match.tl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/txr/stdlib/match.tl b/share/txr/stdlib/match.tl index 526e3b3d..18ab6577 100644 --- a/share/txr/stdlib/match.tl +++ b/share/txr/stdlib/match.tl @@ -116,7 +116,7 @@ test-expr ^(equal ,obj-var ',atom))))) (defun compile-predicate-match (pred-expr obj-var) - (tree-bind (fun sym) pred-expr + (tree-bind (fun : sym) pred-expr (or (null sym) (bindable sym) (compile-error *match-form* "~s is not a symbol" sym)) (let ((var-match (compile-var-match sym obj-var))) -- cgit v1.2.3