-- Types module -- By Gregory W. Schwartz -- | Collects all types used in the program module Math.TreeFun.Types where -- Built-in import qualified Data.Map as M import qualified Data.Sequence as S import Data.Tree -- Algebraic data PropertySuperTree a b = PropertySuperTree { superTree :: !(Tree (SuperNode a)) , superProperties :: !(PropertyMap a b) } -- Tree with super smart nodes data SuperNode a = SuperRoot | SuperNode { myRootLabel :: !a , myParent :: !(SuperNode a) , myLeaves :: !(M.Map a (Int, Int)) } deriving (Read, Show, Eq, Ord) -- Basic type Height = Int -- Advanced type DistanceMap a = M.Map a (M.Map Int (S.Seq a)) type PropertyMap a b = M.Map a (S.Seq b) type MaybePropertyMap a b = M.Map a (Maybe (S.Seq b))