module DDC.Core.Salt.Compounds.Lit
( xBool
, xNat, xInt, xSize
, xWord, xFloat, xTag
, xTextLit)
where
import DDC.Core.Salt.Compounds.PrimTyCon
import DDC.Core.Salt.Name
import DDC.Core.Exp
import Data.Text (Text)
xBool :: a -> Bool -> Exp a Name
xBool a b = XCon a (DaConPrim (NameLitBool b) tBool)
xNat :: a -> Integer -> Exp a Name
xNat a i = XCon a (dcNat i)
xInt :: a -> Integer -> Exp a Name
xInt a i = XCon a (DaConPrim (NameLitInt i) tInt)
xSize :: a -> Integer -> Exp a Name
xSize a i = XCon a (DaConPrim (NameLitSize i) tSize)
xWord :: a -> Integer -> Int -> Exp a Name
xWord a i bits = XCon a (DaConPrim (NameLitWord i bits) (tWord bits))
xFloat :: a -> Double -> Int -> Exp a Name
xFloat a i bits = XCon a (DaConPrim (NameLitFloat i bits) (tFloat bits))
xTag :: a -> Integer -> Exp a Name
xTag a i = XCon a (DaConPrim (NameLitTag i) tTag)
dcNat :: Integer -> DaCon Name
dcNat i = DaConPrim (NameLitNat i) tNat
xTextLit :: a -> Text -> Exp a Name
xTextLit a tx = XCon a (DaConPrim (NameLitTextLit tx) tTextLit)