added #:mode and #:modes premise syntax (#16)

This commit is contained in:
Milo 2017-07-24 11:11:56 -04:00 committed by Stephen Chang
parent 61ad998c7a
commit 2d6ecae8c4

View File

@ -317,6 +317,20 @@
[pattern (~seq #:fail-unless condition:expr message:expr)
#:with pat
#'(~post (~fail #:unless condition message))]
[pattern (~seq #:mode param:id value:expr (sub-clause:clause ...))
#:with tmp (generate-temporary #'param)
#:with pat
#'(~and (~do (define tmp [param])
[param value])
sub-clause.pat ...
(~do [param tmp]))]
[pattern (~seq #:modes ([param:id value:expr] ...) (sub-clause:clause ...))
#:with (tmp ...) (generate-temporary #'[param ...])
#:with pat
#'(~and (~do (define tmp [param]) ...
[param value] ...)
sub-clause.pat ...
(~do [param tmp] ...))]
)
(define-syntax-class last-clause
#:datum-literals ( )