Я пишу функцию аннотирования, которая часто использует match-lambda с рекурсивными вызовами для аннотирования. Вот один из шаблонов и совпадений:
(`(,<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>)))))
Любой совет приветствуется.
Спасибо.