如何摆脱球拍中的方括号

时间:2014-04-17 03:13:26

标签: racket

我试图将一些函数解析为(let([x 1])x)但是球拍读取[as(。有没有简单的方法可以保留它[]?

这是当我尝试使用反斜杠[反斜杠]转义时返回的内容:

    (let (|[| fact #f |]| |[| fact2 #f |]| |[| fact3 #f |]|) fact3)

我想要的是:

,   (let ([fact #f][fact2 #f][fact3 #f]) fact3)

1 个答案:

答案 0 :(得分:1)

如果您使用read-syntax原语,则解析数据结构中的括号将具有paren-shape属性,该属性将告诉您它们是否为正方形。

例如:

> (define stx-1 (read-syntax #f (open-input-string "(hello)")))
> (define stx-2 (read-syntax #f (open-input-string "[hello]")))
> stx-1
#<syntax::1 (hello)>
> stx-2
#<syntax::1 (hello)>
> (syntax-property stx-1 'paren-shape)
#f
> (syntax-property stx-2 'paren-shape)
#\[

因此syntax数据结构可以记住方括号在那里。