dph-base-0.6.0.1: Data/Array/Parallel/Base/Tag.hs
-- | Data constructor tags.
module Data.Array.Parallel.Base.Tag
( Tag
, tagToInt, intToTag
, fromBool, toBool)
where
-- | Given a value of an algebraic type, the tag tells us what
-- data constructor was used to create it.
type Tag = Int
-- | Convert a `Tag` to an `Int`. This is identity at the value level.
tagToInt :: Tag -> Int
tagToInt = id
{-# INLINE tagToInt #-}
-- | Convert an `Int` to a `Tag`. This is identity at the value level.
intToTag :: Int -> Tag
intToTag = id
{-# INLINE intToTag #-}
-- | Get the `Tag` of a `Bool` value. `False` is 0, `True` is 1.
fromBool :: Bool -> Tag
fromBool False = 0
fromBool True = 1
{-# INLINE fromBool #-}
-- | Convert a `Tag` to a `Bool` value.
toBool :: Tag -> Bool
toBool n | n == 0 = False
| otherwise = True
{-# INLINE toBool #-}