Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell98 |
Lindenmayer system definition, expander and renderer.
- type Element = Char
- type Axiom = [Element]
- type Rules = Map Element Axiom
- data LSystem = LSystem Axiom Rules
- lSystem :: Axiom -> [(Element, [Element])] -> LSystem
- getRule :: Rules -> Element -> [Element]
- applyRule :: [Element] -> Rules -> [Element]
- expand :: LSystem -> Int -> [Element]
- stateT :: Element -> Turtle -> Turtle
- cmd :: (Turtle -> b -> (Turtle, b)) -> Element -> Turtle -> b -> (Turtle, b)
- render :: b -> (b -> Pt R -> Pt R -> b) -> [Element] -> Turtle -> b
Documentation
lSystem :: Axiom -> [(Element, [Element])] -> LSystem Source
L-System constructor.
lSystem "F+F+F" [('F',"F-F+F")]
expand :: LSystem -> Int -> [Element] Source
n iterations of the specified LSystem
.
let f p q n = expand (lSystem p q) n f "A" [('A',"AB"),('B',"A")] 5 == "ABAABABAABAAB" f "0" [('1',"11"),('0',"1[0]0")] 3 == "1111[11[1[0]0]1[0]0]11[1[0]0]1[0]0" f "A" [('A',"ABA"),('B',"BBB")] 3 == "ABABBBABABBBBBBBBBABABBBABA" f "F" [('F',"F+F-F-F+F")] 2 == "F+F-F-F+F+F+F-F-F+F-F+F-F-F+F-F+F-F-F+F+F+F-F-F+F" f "F+F+F" [('F',"F-F+F")] 1 == "F-F+F+F-F+F+F-F+F"