hw-prim-0.3.0.1: src/HaskellWorks/Data/Unsign.hs
{-# LANGUAGE TypeFamilies #-}
module HaskellWorks.Data.Unsign
( Unsign(..)
) where
import Data.Int
import Data.Word
class Unsign a where
type UnsignOf a
unsign :: a -> UnsignOf a
instance Unsign Int where
type UnsignOf Int = Word
unsign = fromIntegral
{-# INLINE unsign #-}
instance Unsign Int8 where
type UnsignOf Int8 = Word8
unsign = fromIntegral
{-# INLINE unsign #-}
instance Unsign Int16 where
type UnsignOf Int16 = Word16
unsign = fromIntegral
{-# INLINE unsign #-}
instance Unsign Int32 where
type UnsignOf Int32 = Word32
unsign = fromIntegral
{-# INLINE unsign #-}
instance Unsign Int64 where
type UnsignOf Int64 = Word64
unsign = fromIntegral
{-# INLINE unsign #-}
instance Unsign Word where
type UnsignOf Word = Word
unsign = fromIntegral
{-# INLINE unsign #-}
instance Unsign Word8 where
type UnsignOf Word8 = Word8
unsign = fromIntegral
{-# INLINE unsign #-}
instance Unsign Word16 where
type UnsignOf Word16 = Word16
unsign = fromIntegral
{-# INLINE unsign #-}
instance Unsign Word32 where
type UnsignOf Word32 = Word32
unsign = fromIntegral
{-# INLINE unsign #-}
instance Unsign Word64 where
type UnsignOf Word64 = Word64
unsign = fromIntegral
{-# INLINE unsign #-}