typo
[L-seed.git] / src / Lseed / Data.hs
1 -- | Data definitions for L-seed
2 module Lseed.Data where 
3
4 -- | A list of plants, together with their position in the garden, in the interval [0,1]
5 type Garden = [ Planted ]
6
7 -- | A plant with metainformatoin
8 data Planted = Planted
9         { plantPosition :: Double -- ^ Position in the garden, interval [0,1]
10         , genome :: LSystem  -- ^ Lsystem in use
11         , phenotype :: Plant -- ^ Actual current form of the plant
12         }
13
14 -- | A plant, which is
15 data Plant 
16         = Bud -- ^ a bud, i.e. the end of a sprout
17         | Stipe Double Plant -- ^ a stipe with a length (factor of stipeLength)
18                              --   and more of the plant next
19         | Fork Double Plant Plant -- ^ a fork with a sidewise offspring at a radial angle,
20                                   --   and a straight continuation 
21         deriving (Show)
22
23 -- | A (compiled) rule of an L-system, with a matching function and a weight
24 type LRule = (Int, Plant -> Maybe Plant)
25
26 -- | An complete LSystem 
27 type LSystem = [LRule]