Если у меня есть: (применить f '(x1 x2 x3 .... xn)), и я хотел бы изменить его на расширение макроса - PullRequest
0 голосов
/ 19 февраля 2010

У меня есть (apply f '(x1 x2 x3 .... xn)), и я хотел бы изменить его на расширение макроса: (f x1 x2 x3...xn).Какие проблемы могут возникнуть?

1 Ответ

2 голосов
/ 19 февраля 2010

Если вы просто конвертируете

(define (my-apply f args)
   (apply f args))

до

(define-macro (my-other-apply f args)
   `(,f ,@args))

тогда это кажется достаточно простым. Самой большой ошибкой в ​​этой ситуации является то, что вы должны помнить, что не следует указывать список, который вы передаете макросу.

>(my-apply + '(1 2 3))
>6

>(my-other-apply + '(1 2 3))
>ERROR syntax-error: "(+ quote 1 2 3)"

>(my-other-apply + (1 2 3))
>6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...