aboutsummaryrefslogtreecommitdiffstats
path: root/match.csc
diff options
context:
space:
mode:
Diffstat (limited to 'match.csc')
-rw-r--r--match.csc9
1 files changed, 5 insertions, 4 deletions
diff --git a/match.csc b/match.csc
index d188349..3e02937 100644
--- a/match.csc
+++ b/match.csc
@@ -42,15 +42,16 @@
(define-syntax match
(syntax-rules (when)
((match x (pattern (when condition) result result* ...))
- (if (and (matches? x pattern)
- condition)
- (bind-pattern x pattern result result* ...)))
+ (if (matches? x pattern)
+ (bind-pattern x pattern
+ (if condition
+ (begin result result* ...)))))
((match x (pattern result1 result2 ...))
(if (matches? x pattern)
(bind-pattern x pattern result1 result2 ...)))
((match x (pattern (when condition) result result* ...) clause clause* ...)
(if (and (matches? x pattern)
- condition)
+ (bind-pattern x pattern condition))
(bind-pattern x pattern result result* ...)
(match x clause clause* ...)))
((match x (pattern result1 result2 ...) clause1 clause2 ...)