使用语法分析时评估条件?

时间:2018-12-05 22:16:41

标签: racket

#:when中是否有match中的syntax-parse?在文档中找不到它。谢谢。

1 个答案:

答案 0 :(得分:3)

是的,有。也称为#:when。当您在文档搜索中search for #:when时,它甚至会显示出来。

从文档中

  

#:when condition-expr

     

在所有先前属性的上下文中评估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)