diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2021-01-21 22:46:51 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2021-01-21 22:46:51 -0800 |
commit | 16094ab126996e3963561b520ff22b405b56ca61 (patch) | |
tree | 7ef6492dcc3691e94985d64ea3201090462502bd /share | |
parent | 646804b3ae8a8eb64c44a7ae73fd3f0f3c1ad568 (diff) | |
download | txr-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.tl | 5 |
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) |