ddc-core-tetra-0.4.1.1: DDC/Core/Tetra/Prim/OpCast.hs
module DDC.Core.Tetra.Prim.OpCast
( readPrimCast
, typePrimCast)
where
import DDC.Core.Tetra.Prim.Base
import DDC.Type.Compounds
import DDC.Type.Exp
import DDC.Core.Salt.Name (readPrimCast)
-- | Take the type of a primitive numeric cast operator.
typePrimCast :: PrimCast -> Type Name
typePrimCast op
= case op of
PrimCastConvert
-> tForalls [kData, kData] $ \[t1, t2] -> t1 `tFun` t2
PrimCastPromote
-> tForalls [kData, kData] $ \[t1, t2] -> t1 `tFun` t2
PrimCastTruncate
-> tForalls [kData, kData] $ \[t1, t2] -> t1 `tFun` t2