【发布时间】:2011-07-05 04:25:03
【问题描述】:
我正在编写一个函数 annotate,它经常使用 match-lambda 并递归调用 annotate。这是其中一种模式和匹配项:
(`(,<param> . ,<params> (lambda (,<args>) ,<stmt> . ,<stmts>))
`(CLOSURE ENV ,(append (append `(,<param>) `(,<params>))`(,<args>)) (lambda (ENV) ,(map annotate `(,<stmt> . ,<stmts>)))))
我收到了关于第一次使用“。”的投诉。是非法的——在“param”和“params”之间——但我不知道为什么。这种模式和匹配没有任何抱怨,并且与第一个“。”非常相似:
(`(λ (,<param1> . ,<params>) ,<stmt> . ,<stmts>)
`(CLOSURE ENV ,(map annotate `(,<param1> . ,<params>)) (λ (ENV) ,(map annotate `(,<stmt> . ,<stmts>)))))
感谢任何建议。
谢谢。
【问题讨论】:
标签: syntax scheme pattern-matching racket