module Navigable where import HatTrace data NavigableExpr = Highlight Bool (Expr NavigableExpr) deriving (Show) data Expr e = Application { ref :: HatNode , parent :: e , fun :: e , args :: [e] , result :: e } | Constant { ref :: HatNode , parent :: e , fun :: e , result :: e } | Constructor { ref :: HatNode , name :: String , infixType :: HatInfixType } | Identifier { ref :: HatNode , name :: string , infixType :: HatInfixType } | SAT_A { ref :: HatNode , projValue :: e } | SAT_B { ref :: HatNode , projValue :: e } | SAT_C { ref :: HatNode , projValue :: e } | Hidden { ref :: HatNode , parent :: e } | Proj { ref :: HatNode , parent :: e , projValue :: e } | Int { ref :: HatNode , valueInt :: Int } | Char { ref :: HatNode , valueChar :: Char } | Integer { ref :: HatNode , valueInteger :: Integer } | Rational { ref :: HatNode , valueRational :: Rational } | Float { ref :: HatNode , valueFloat :: Float } | Double { ref :: HatNode , valueDouble :: Double } | String { ref :: HatNode , valueString :: String } | Case { ref :: HatNode } | Lambda { ref :: HatNode } | If { ref :: HatNode } | Guard { ref :: HatNode } | Container { ref :: HatNode } | Dummy { ref :: HatNode } | None { ref :: HatNode } deriving (Show)