It based on Data.Dynamic and tree container, so that Gene can represent both haskell functions and syntax trees by type connstructors. since it also supports higher order functions by multiple way type parsing, there's no need to have any variable in Gene's Tree structure.
take a look at module AI.Heukarya.Center first
AI.Heukarya.Gene : Abstract Gene manipulation and Typeclass for implementing data types under tree structure
AI.Heukarya.Jungle : Operating Collections of Gene
AI.Heukarya.Center : Module which wraps main functionality for library using
AI.Heukarya.Gene.Dynamic : one of Gene's implementation. since it's impossible to save checkpoints if using Data.Dynamic directly, a symbolic wrapper around dynamic is provied inside
AI.Heukarya.Gene.Dynamic.Double : a sample geneList of operators of Double precision numbers