module Language.Haskell.TypeTree.ExampleDatatypes where

import Prelude

data CondTree v c a = CondNode
    { condTreeData :: a
    , condTreeConstraints :: c
    , condTreeComponents :: [CondBranch v c a]
    }

data CondBranch v c a = CondBranch
    { condBranchCondition :: Condition v
    , condBranchIfTrue :: CondTree v c a
    , condBranchIfFalse :: Maybe (CondTree v c a)
    }

data Condition c
    = Var c
    | Lit Bool
    | CAnd (Condition c)
           (Condition c)