Merge pull request #115 from KeenS/case-else
allow `else` and `=>` keyword in `case`
This commit is contained in:
commit
935b5ca4f5
|
@ -263,10 +263,14 @@
|
||||||
,(let loop ((clauses clauses))
|
,(let loop ((clauses clauses))
|
||||||
(if (null? clauses)
|
(if (null? clauses)
|
||||||
#f
|
#f
|
||||||
`(,(r 'if) (,(r 'or)
|
`(,(r 'if) ,(if (compare (r 'else) (caar clauses))
|
||||||
|
'#t
|
||||||
|
`(,(r 'or)
|
||||||
,@(map (lambda (x) `(,(r 'eqv?) ,(r 'key) (,(r 'quote) ,x)))
|
,@(map (lambda (x) `(,(r 'eqv?) ,(r 'key) (,(r 'quote) ,x)))
|
||||||
(caar clauses)))
|
(caar clauses))))
|
||||||
(begin ,@(cdar clauses))
|
,(if (compare (r '=>) (cadar clauses))
|
||||||
|
`(,(caddar clauses) ,(r 'key))
|
||||||
|
`(,(r 'begin) ,@(cdar clauses)))
|
||||||
,(loop (cdr clauses))))))))))
|
,(loop (cdr clauses))))))))))
|
||||||
|
|
||||||
(define-syntax syntax-error
|
(define-syntax syntax-error
|
||||||
|
|
Loading…
Reference in New Issue