[nem-pl] Dalsze rozważania o higienicznych makrach

Kamil Skalski nazgul at omega.pl
Mon Feb 23 18:02:14 CET 2004


Sunday 22 of February 2004 21:25, Kamil Skalski wrote:
> macro m() { <[ def $("f" : var) = ... ]> }
> macro m'() { <[ m(); $("f" : var) }

I jeszcze takie pytanko - czy to aby na pewno ma tak działać? Czy definicje 
produkowane niecnie przez jakieś makro mają przetrwać poza jego wnętrze?

Wyobraźmy sobie takie coś:
  macro @while (cond, body)
  syntax ("while", "(", cond, ")", body) 
  {
    <[ 
      def loop () : void {
        when ($cond) { $body; loop() }
      }; 
      loop (); 
    ]>
  }

Foo () {
  mutable i <- 0;
  def loop () {
     i <- i + 1;
     mutable j <- 0;
     while (j < i) j <- j + 1;  /// makro while wprowadza swoją loop()
     when (i < 100) loop (); // to loop binduje się do loop z while
  }
}

chyba jednak intencja programisty to nie przechwytywanie loop przez while...





More information about the devel-pl mailing list