【发布时间】:2013-09-19 16:47:29
【问题描述】:
为了简洁起见,我正在尝试定义一个生成匿名函数的宏,该函数采用一个名为它的参数,而不是
(λ (it) body)
我可以写(λλ body)
(换句话说,(λλ body) 转换为 (λ (it) body))
(define-syntax-parameter it #f)
(define-syntax λλ
(syntax-rules ()
((_ body)
(λ (x) (syntax-parameterize ((it x)) body)))))
(λλ (< it 0)) ; For testing
我在(define-syntax-parameter if #f) 得到operators.rkt:13:28: ?: literal data is not allowed; no #%datum syntax transformer is bound in the transformer environment in: #f,但据我所知,这与球拍文档中关于如何使用define-syntax-parameter 的示例完全相同。我可以通过用函数替换#f 来抑制错误(我使用了member,但不是出于任何真正的原因),但在这样做之后,我得到operators.rkt:17:38: x: identifier used out of context in: x。我做错了什么?
【问题讨论】: