summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2021-04-26 07:25:54 -0700
committerKaz Kylheku <kaz@kylheku.com>2021-04-26 07:25:54 -0700
commit6aa7f5abfb2e4c396b7f76ded0ef7dbded89c957 (patch)
treeb1616d55a3ac13d4c314f007ad4a38cd0b67093f
parent538323f3a21632f1b8a6443ed79e2305306cee7b (diff)
downloadtxr-6aa7f5abfb2e4c396b7f76ded0ef7dbded89c957.tar.gz
txr-6aa7f5abfb2e4c396b7f76ded0ef7dbded89c957.tar.bz2
txr-6aa7f5abfb2e4c396b7f76ded0ef7dbded89c957.zip
matcher: use match-str instead of sub-str and str=
* share/txr/stdlib/match.tl (expand-quasi-match): Don't extract substrings with sub-str; use match-str to match in-place.
-rw-r--r--share/txr/stdlib/match.tl8
1 files changed, 4 insertions, 4 deletions
diff --git a/share/txr/stdlib/match.tl b/share/txr/stdlib/match.tl
index 5586b874..d3d89702 100644
--- a/share/txr/stdlib/match.tl
+++ b/share/txr/stdlib/match.tl
@@ -848,7 +848,7 @@
(match-case args
;; `text`
((@(stringp @txt))
- (list ^@(require @nil (str= ,txt (sub-str ,str ,pos t)))))
+ (list ^@(require @nil (match-str ,str ,txt ,pos))))
;; `txt@...`
((@(stringp @txt) . @rest)
(with-gensyms (npos)
@@ -857,8 +857,8 @@
(quasi-match vlist rest vars str npos))))
;; `@var` (existing binding)
(((@(eq 'sys:var) @(bound-p vlist vars @sym) . @nil))
- (list ^@(require @nil (str= (sys:quasi ,(car args))
- (sub-str ,str ,pos t)))))
+ (list ^@(require @nil (match-str ,str (sys:quasi ,(car args))
+ ,pos))))
;; `@var@...` (existing binding)
((@(as avar (@(eq 'sys:var) @(bound-p vlist vars @sym) . @nil))
. @rest)
@@ -867,7 +867,7 @@
^@(with ,len (len ,txt))
^@(with ,npos (+ ,pos ,len))
^@(require @nil
- (str= ,txt (sub-str ,str ,pos ,npos)))
+ (match-str ,str ,txt ,pos))
(quasi-match vlist rest vars str npos))))
;; `@var` (new binding)
(((@(eq 'sys:var) @sym))