Scheme 重写匹配lambda
作为练习,我试图定义一个规则Scheme 重写匹配lambda,scheme,racket,match,Scheme,Racket,Match,作为练习,我试图定义一个规则match rewriter,其行为与match lambda相同,但如果未找到匹配项,则返回其参数。到目前为止,我有: (define-syntax match-rewriter (syntax-rules () ((_ (patt body) ...) (λ (x) (match x (patt body) ...))))) 如果找到匹配项,它似乎工作得很好 但是,如果没有找到匹配项,我不知道如何返回参数x 我知道如果没有找到匹配项,ma
match rewriter
,其行为与match lambda
相同,但如果未找到匹配项,则返回其参数。到目前为止,我有:
(define-syntax match-rewriter
(syntax-rules ()
((_ (patt body) ...)
(λ (x) (match x (patt body) ...)))))
如果找到匹配项,它似乎工作得很好
但是,如果没有找到匹配项,我不知道如何返回参数x
我知道如果没有找到匹配项,match将抛出异常。但是我不知道如何捕捉它,如果存在,我希望有一个更简单的解决方案。如果这个问题是关于“的
匹配”
,那么只需添加一个匹配任何内容的子句即可:
(match x [patt body] ... [_ x])
如果此问题与的
match
有关,则只需添加一个与任何内容匹配的子句:
(match x [patt body] ... [_ x])