[nem-pl] Uwagi różne

Kamil Skalski nazgul at omega.pl
Fri Feb 20 18:23:57 CET 2004


On Friday 20 of February 2004 17:57, Marcin 'Qrczak' Kowalczyk wrote:
> Jeszcze jedno. Skąd kompilator wie, które identyfikatory ma
> kwalifikować, a które nie? Zanim nie skompiluje rozwinięcia makra, nie

Hmm, myślałem żeby bezwględnie stosować zasadę lexical-scoping. To
co jest widoczne w miejscu definicji makra to jest związane. To znaczy ew.
to co wprowadzają makra przed miejscem definicji o której myślimy:

macro m () { <[ def ("a" : var) = 4; ]> }
macro m'() { m(); assert (a == 4); ... <[ $(a : int) ]> }

> wie, które wystąpienia zmiennych są wolne, które związane, a które
> wiążące. W makrze mogą być przecież użyte różne dziwne makra
> wprowadzające własne składnie definicji zmiennych i funkcji.

Nie są natomiast widoczne zmienne wprowadzane przez makra dopiero
w kodzie wynikowym:

macro m'() { <[ m(); assert (a == 4); ]> } da błąd, że "a unbounded"
trzeba napisać
macro m'() { <[ m(); assert ($("a" : var) == 4); ]> }

chociaż w sumie... może zrobić żeby makra w quotowaniach też się 
expandowały...?

Prawdę mówiąc to jest problematyczne tyko wtedy gdy ktoś pisze
niehigieniczne makra - to przynosi różne takie problemiki. Niehigienicznie
powinno się pisać jedynie gdy wie się dokładnie co się robi, np. odwołując
się do czegoś globalnego, o czym wiemy że nie zostanie złapane.




More information about the devel-pl mailing list