module DDC.Core.Exp.Annot.Predicates
( module DDC.Type.Predicates
, isXVar, isXCon
, isAtomX, isAtomW
, isXLAM, isXLam
, isLambdaX
, isXApp
, isXCast
, isXCastBox
, isXCastRun
, isXLet
, isPDefault
, isXType
, isXWitness)
where
import DDC.Core.Exp.Annot.Exp
import DDC.Type.Predicates
isXVar :: Exp a n -> Bool
isXVar xx
= case xx of
XVar{} -> True
_ -> False
isXCon :: Exp a n -> Bool
isXCon xx
= case xx of
XCon{} -> True
_ -> False
isAtomX :: Exp a n -> Bool
isAtomX xx
= case xx of
XVar{} -> True
XCon{} -> True
XType _ t -> isAtomT t
XWitness _ w -> isAtomW w
_ -> False
isAtomW :: Witness a n -> Bool
isAtomW ww
= case ww of
WVar{} -> True
WCon{} -> True
_ -> False
isXLAM :: Exp a n -> Bool
isXLAM xx
= case xx of
XLAM{} -> True
_ -> False
isXLam :: Exp a n -> Bool
isXLam xx
= case xx of
XLam{} -> True
_ -> False
isLambdaX :: Exp a n -> Bool
isLambdaX xx
= isXLAM xx || isXLam xx
isXApp :: Exp a n -> Bool
isXApp xx
= case xx of
XApp{} -> True
_ -> False
isXCast :: Exp a n -> Bool
isXCast xx
= case xx of
XCast{} -> True
_ -> False
isXCastBox :: Exp a n -> Bool
isXCastBox xx
= case xx of
XCast _ CastBox _ -> True
_ -> False
isXCastRun :: Exp a n -> Bool
isXCastRun xx
= case xx of
XCast _ CastRun _ -> True
_ -> False
isXLet :: Exp a n -> Bool
isXLet xx
= case xx of
XLet{} -> True
_ -> False
isXType :: Exp a n -> Bool
isXType xx
= case xx of
XType{} -> True
_ -> False
isXWitness :: Exp a n -> Bool
isXWitness xx
= case xx of
XWitness{} -> True
_ -> False
isPDefault :: Pat n -> Bool
isPDefault PDefault = True
isPDefault _ = False