考虑以下示例:
#lang racket
(match '(cat . doge)
[`(,a . ,b)
(match b
[a #t]
[_ #f])]
[_ "Not a pair"])
如果我想匹配头部和尾部相同的对,我可能会这样写。但这不起作用,因为第二个a
被绑定为一个新变量(并且匹配任何内容)。是否有任何模式形式允许我使用之前绑定的a
从外部范围?
我知道这可以通过以下方式实现
(match* ('cat 'doge)
[(a a) #t]
[(_ _) #f])
但我仍然想知道是否有办法从外部作用域获取该变量(或者是否有不这样做的原因,例如某些潜在的名称冲突问题或其他问题)。
Use == http://docs.racket-lang.org/reference/match.html#%28form._%28%28lib._racket%2Fmatch..rkt%29._~3d~3d%29%29:
(match '(cat . doge)
[`(,a . ,b)
(match b
[(== a) #t]
[_ #f])]
[_ "Not a pair"])
由于文档中的位置,== http://docs.racket-lang.org/reference/match.html#%28form._%28%28lib._racket%2Fmatch..rkt%29._~3d~3d%29%29很容易被忽视。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)