我试图将一些函数解析为(let([x 1])x)但是球拍读取[as(。有没有简单的方法可以保留它[]?
这是当我尝试使用反斜杠[反斜杠]转义时返回的内容:
(let (|[| fact #f |]| |[| fact2 #f |]| |[| fact3 #f |]|) fact3)
我想要的是:
, (let ([fact #f][fact2 #f][fact3 #f]) fact3)
答案 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数据结构可以记住方括号在那里。