summaryrefslogtreecommitdiff
path: root/gf-book/examples/chapter8/Sierpinski.gf
blob: 722088ce5a8cdc03c25e3ac214dccd3d87b91c40 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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" ;
}