summaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2021-01-21 22:46:51 -0800
committerKaz Kylheku <kaz@kylheku.com>2021-01-21 22:46:51 -0800
commit16094ab126996e3963561b520ff22b405b56ca61 (patch)
tree7ef6492dcc3691e94985d64ea3201090462502bd /share
parent646804b3ae8a8eb64c44a7ae73fd3f0f3c1ad568 (diff)
downloadtxr-16094ab126996e3963561b520ff22b405b56ca61.tar.gz
txr-16094ab126996e3963561b520ff22b405b56ca61.tar.bz2
txr-16094ab126996e3963561b520ff22b405b56ca61.zip
matcher: default guard-expr to t in match-guard.
* share/txr/stdlib/match.tl (struct match-guard): guard-expr slot defaults to t, so the guard defauls open. Guards are sometimes used just for binding temporaries and not imposing any condition. (compile-parallel-match, compile-hash-match): Omit initial value of t for guard-expr.
Diffstat (limited to 'share')
-rw-r--r--share/txr/stdlib/match.tl5
1 files changed, 1 insertions, 4 deletions
diff --git a/share/txr/stdlib/match.tl b/share/txr/stdlib/match.tl
index e5e37be2..b95fc627 100644
--- a/share/txr/stdlib/match.tl
+++ b/share/txr/stdlib/match.tl
@@ -32,7 +32,7 @@
(mapcar (ret ^(set ,@1 ,@2)) me.vars me.var-exprs)))
(defstruct match-guard (match-vars)
- guard-expr)
+ (guard-expr t))
(defstruct compiled-match (match-vars)
pattern
@@ -286,7 +286,6 @@
(diff all-vars pm.vars)))
t))))))
(let ((guard (new match-guard
- guard-expr t
vars all-vars)))
(new compiled-match
pattern par-pat
@@ -329,7 +328,6 @@
var-list)))
(push
(new match-guard
- guard-expr t
vars (list km.obj-var)
var-exprs ^((hash-keys-of ,obj-var ',val)))
km.guard-chain)
@@ -338,7 +336,6 @@
(let ((vm (compile-match val (gensym "val") var-list)))
(push
(new match-guard
- guard-expr t
vars (list vm.obj-var)
var-exprs ^((gethash ,obj-var ',key)))
vm.guard-chain)