packages feed

ddc-source-tetra-0.4.3.1: DDC/Source/Tetra/Prim/TyCon.hs

{-# LANGUAGE TypeFamilies #-}
module DDC.Source.Tetra.Prim.TyCon
        ( pattern KData
        , pattern KRegion
        , pattern KEffect

        , pattern TImpl
        , pattern TSusp
        , pattern TRead
        , pattern TWrite
        , pattern TAlloc)
where
import DDC.Source.Tetra.Prim.Base
import DDC.Type.Exp.Generic.Exp
import DDC.Type.Exp.TyCon


-- | Representation of the Data kind.
pattern KData           = TCon (TyConPrim (PrimTypeKiCon KiConData))

-- | Representation of the Region kind.
pattern KRegion         = TCon (TyConPrim (PrimTypeKiCon KiConRegion))

-- | Representation of the Effect kind.
pattern KEffect         = TCon (TyConPrim (PrimTypeKiCon KiConEffect))

-- | Representation of an implication type.
pattern TImpl  t1 t2    = TApp (TApp (TCon (TyConPrim (PrimTypeTwCon TwConImpl))) t1) t2

-- | Representation of a suspension type.
pattern TSusp  tE tA    = TApp (TApp (TCon (TyConPrim (PrimTypeTcCon TcConSusp))) tE) tA

-- | Representation of a read effect.
pattern TRead  tR       = TApp (TCon (TyConPrim (PrimTypeTcCon TcConRead)))  tR

-- | Representation of a write effect.
pattern TWrite tR       = TApp (TCon (TyConPrim (PrimTypeTcCon TcConWrite))) tR

-- | Representation of a alloc effect.
pattern TAlloc tR       = TApp (TCon (TyConPrim (PrimTypeTcCon TcConAlloc))) tR