From 0a344194aa717aeff7079560ed1624c97066447b Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Sun, 24 Jan 2021 13:23:51 -0800 Subject: doc: add back discussion about (rcons ...) pattern. * txr.1: Add anote that a pattern a..b matches rcons syntax, and add examples. * tests/011/patmatch.tl: new examples from doc added as tests. --- tests/011/patmatch.tl | 3 +++ txr.1 | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/tests/011/patmatch.tl b/tests/011/patmatch.tl index ac474738..c9326eda 100644 --- a/tests/011/patmatch.tl +++ b/tests/011/patmatch.tl @@ -144,3 +144,6 @@ (test (when-match #R(1 @a) 1..2 a) 2) (test (when-match #R(2 @a) 1..2 a) nil) (test (when-match #R(@a 1) 1..2 a) nil) + +(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)) diff --git a/txr.1 b/txr.1 index 99e03045..3d64f752 100644 --- a/txr.1 +++ b/txr.1 @@ -39878,6 +39878,12 @@ is matched against its .code to part. +Note that if the range expression notation +.code a..b +is used as a pattern, that is actualy a list pattern, due to +that being a syntactic sugar for +.codn "(rcons a b)" . + .TP* Examples: .verb @@ -39886,6 +39892,13 @@ part. (if-match #R(10 20) #R(1 2) :yes :no) -> :no (when-match #R(@a @b) 1..2 (list a b)) -> (1 2) + + ;; not a range match! rcons syntax match + (when-match @a..@b '1..2 (list a b)) -> (1 2) + + ;; above, de-sugared: + (when-match (rcons @a @b) (rcons 1 2) (list a b)) -> (1 2) + .brev .coNP Pattern operator @ struct -- cgit v1.2.3