?

Log in

No account? Create an account

Метапрограммирование в Агде и немного философии - Excelsior

Aug. 27th, 2013

09:49 am - Метапрограммирование в Агде и немного философии

Previous Entry Share Next Entry

Comments:

[User Picture]
From:xeno_by
Date:September 30th, 2013 02:37 pm (UTC)
(Link)
Есть вопрос насчет syntax parameters.

Скажем, есть вот такой код из официальной документации ракета:
> (define-syntax-parameter it (syntax-rules ()))
> (define-syntax aif
    (syntax-rules ()
      [(aif test then else)
       (let ([t test])
         (syntax-parameterize ([it (syntax-id-rules () [_ t])])
           (if t then else)))]))
И после такого определения, насколько я понимаю, можно писать что-то вроде (aif expr it it) и it будет ссылаться на результат вычисления expr. Все это без ручного нарушения гигиены, что прекрасно. Но что если пользователь хочет переименовать it в it2? Будет ли у него такая возможность?
(Reply) (Parent) (Thread)