module HaskellWorks.Data.Sign
( Sign(..)
) where
import Data.Int
import Data.Word
class Sign a where
type SignOf a
sign :: a -> SignOf a
instance Sign Word where
type SignOf Word = Int
sign = fromIntegral
instance Sign Word8 where
type SignOf Word8 = Int8
sign = fromIntegral
instance Sign Word16 where
type SignOf Word16 = Int16
sign = fromIntegral
instance Sign Word32 where
type SignOf Word32 = Int32
sign = fromIntegral
instance Sign Word64 where
type SignOf Word64 = Int64
sign = fromIntegral
instance Sign Int where
type SignOf Int = Int
sign = fromIntegral
instance Sign Int8 where
type SignOf Int8 = Int8
sign = fromIntegral
instance Sign Int16 where
type SignOf Int16 = Int16
sign = fromIntegral
instance Sign Int32 where
type SignOf Int32 = Int32
sign = fromIntegral
instance Sign Int64 where
type SignOf Int64 = Int64
sign = fromIntegral