ddc-source-tetra-0.4.2.1: DDC/Source/Tetra/Exp/Annot.hs
{-# LANGUAGE TypeFamilies #-}
module DDC.Source.Tetra.Exp.Annot
( module DDC.Source.Tetra.Exp.Generic
, Annot
, HasAnonBind (..)
-- * Expressions
, Name
, Bound
, Bind
, Exp
, Lets
, Alt
, Pat
, Clause
, GuardedExp
, Guard
, Cast
, DaCon (..)
-- * Witnesses
, Witness
, WiCon)
where
import DDC.Source.Tetra.Exp.Generic
import DDC.Source.Tetra.Prim
import qualified DDC.Type.Exp as T
-- | Type index for annotated expression type.
data Annot a
instance HasAnonBind (Annot a) where
isAnon _ (T.BAnon _) = True
isAnon _ _ = False
type instance GName (Annot a) = Name
type instance GAnnot (Annot a) = a
type instance GBind (Annot a) = T.Bind Name
type instance GBound (Annot a) = T.Bound Name
type instance GPrim (Annot a) = PrimVal
type Bound = T.Bound Name
type Bind = T.Bind Name
type Exp a = GExp (Annot a)
type Lets a = GLets (Annot a)
type Alt a = GAlt (Annot a)
type Pat a = GPat (Annot a)
type Clause a = GClause (Annot a)
type GuardedExp a = GGuardedExp (Annot a)
type Guard a = GGuard (Annot a)
type Cast a = GCast (Annot a)
type Witness a = GWitness (Annot a)
type WiCon a = GWiCon (Annot a)