packages feed

gf-3.2: book/examples/chapter8/Sierpinski.gf

concrete Sierpinski of Graftal = {
  lincat N = {a : Str; b : Str} ;
  lincat S = {s : Str} ;

  lin z = {a = A; b = B} ;
  lin s x = {
    a = x.b ++ R ++ x.a ++ R ++ x.b ; 
    b = x.a ++ L ++ x.b ++ L ++ x.a
    } ;
  lin c x = {s = "newpath 300 550 moveto" ++ x.a ++ "stroke showpage"} ;

  oper A : Str = "0 2 rlineto" ;
  oper B : Str = "0 2 rlineto" ;
  oper L : Str = "+60 rotate" ;
  oper R : Str = "-60 rotate" ;
}