Есть ли эквивалент #:when из match для syntax-parse?Не смог найти его в документации.Спасибо.
#:when
match
syntax-parse
Да, есть.Это также называется #:when.Он появляется даже при поиске #:when в поиске документации.
Из документов:
#:when <em>condition-expr</em> Оценивает condition-expr в контексте всех предыдущих привязок атрибутов.Если значение #f, соответствующий процесс возвращается.Другими словами, #:when походит на #:fail-unless без аргумента сообщения. Эквивалент #:post (~fail #:unless condition-expr #f). Пример: > (syntax-parse #'(m 5) [(m x:number) #:when (even? (syntax-e #'x)) #'x]) m: bad syntax in: (m 5)
#:when <em>condition-expr</em>
Оценивает condition-expr в контексте всех предыдущих привязок атрибутов.Если значение #f, соответствующий процесс возвращается.Другими словами, #:when походит на #:fail-unless без аргумента сообщения.
condition-expr
#f
#:fail-unless
Эквивалент #:post (~fail #:unless condition-expr #f).
#:post (~fail #:unless condition-expr #f)
Пример:
> (syntax-parse #'(m 5) [(m x:number) #:when (even? (syntax-e #'x)) #'x]) m: bad syntax in: (m 5)