hw-prim-0.3.0.0: src/HaskellWorks/Data/Narrow/Narrow32.hs
{-# LANGUAGE TypeFamilies #-}
module HaskellWorks.Data.Narrow.Narrow32
( Narrow32(..)
) where
import Data.Int
import Data.Word
class Narrow32 a where
type Narrowed32 a
narrow32 :: a -> Narrowed32 a
instance Narrow32 Word32 where
type Narrowed32 Word32 = Word32
narrow32 = fromIntegral
{-# INLINE narrow32 #-}
instance Narrow32 Word64 where
type Narrowed32 Word64 = Word32
narrow32 = fromIntegral
{-# INLINE narrow32 #-}
instance Narrow32 Int32 where
type Narrowed32 Int32 = Int32
narrow32 = fromIntegral
{-# INLINE narrow32 #-}
instance Narrow32 Int64 where
type Narrowed32 Int64 = Int32
narrow32 = fromIntegral
{-# INLINE narrow32 #-}