& Example Ludus implementation of the Dragon curve. & https://en.m.wikipedia.org/wiki/L-system#Example_6:_dragon_curve & variables : F G & constants : + - & start : F & rules : (F -> F+G), (G -> F-G) & angle : 90° & F and G both mean "draw forward", + means "turn left by angle", and − means "turn right by angle" & set a length for each segment let length = 10 & set an angle for all turns, default to 1/3 for triangles let angle = 0.25 fn f! & define 'G' function from the grammaer fn g! { (0) -> fd!(length) (n) -> { f!(dec(n)) rt!(angle) g!(dec(n)) } } & define 'F' function from the grammaer fn f! { (0) -> fd!(length) (n) -> { f!(dec(n)) lt!(angle) g!(dec(n)) } } & this function defines the starting pattern. & each of the f! and g! calls expand based on the grammar at the top of this example fn dragon! (times) -> { f!(times) } & call the base function with a number of iterations & remember, this is exponential! high numbers can freeze your browser. dragon!(10)