?

Log in

No account? Create an account

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

Aug. 27th, 2013

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

Previous Entry Share Next Entry

Comments:

From:Valentin Budaev
Date:August 28th, 2013 11:37 am (UTC)
(Link)
В scheme есть вообще разные подходы, к тому, когда случается clash переменных в разных квазицитатах. Первый - когда все переменные с одним именем, сгенеренные в рамках одного трансформера, "одинаковы", то есть (define x-arg #'x) #`(let ([x 1]) #,x-arg) - работает (если эти формы в одном макросе идут), а второй - когда они разные, то есть в описанном случае будет unbound variable, и связать вводимую квазицитатой переменную можно только в той же квазицитате (если не обойти гигиену руками, конечно). Обычно используется первый - он, в общем, удобнее. Второй более безопасен. Но я, кстати, даже не припомню, где использовался второй.

Edited at 2013-08-28 11:37 am (UTC)
(Reply) (Parent) (Thread)