-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Safe arithmetic operations. -- -- safe-numeric provides safer numeric operators, that have more -- explicit behaviour in terms of overflow and underflow, and are harder -- to misuse. @package safe-numeric @version 0.1 -- | Safe numeric operations. -- -- We take a fairly conservative approach here - this module is an -- extension not a replacement for Prelude. Our suffix naming -- conventions are as follows: -- -- -- -- Currently we provide replacements for: -- -- -- -- When using this module, you might also like to ban the unsafe -- functions from your codebase, e.g. via hlint: -- --
--   - functions:
--     - {name: [fromIntegral, fromInteger, +, '-', '*', ^], within: [], message: "Use safe versions from Safe.Numeric"}
--     - {name: [div, mod, divMod, quot, rem, quotRem], within: [], message: "Use safe versions from Safe.Numeric"}
--   
module Safe.Numeric class NumExpand b a -- | Safely expand type b into type a, with no runtime -- bounds checking. -- -- a.k.a. "fromIntegral hurts my fingers and my eyes" -- -- The value is statically guaranteed to remain the same relative to 0 in -- both directions, i.e. not overflow or underflow, without any runtime -- checks. ex :: NumExpand b a => b -> a -- | Safely expand type b into type a, with no runtime -- bounds checking. -- -- a.k.a. "fromIntegral hurts my fingers and my eyes" -- -- The value is statically guaranteed to remain the same relative to 0 in -- both directions, i.e. not overflow or underflow, without any runtime -- checks. ex :: (NumExpand b a, Num a, Integral b) => b -> a -- | Convert from a type into a smaller type class NumConvert b a -- | Wrap around if the input is out-of-bounds. ctW :: NumConvert b a => b -> a -- | Wrap around if the input is out-of-bounds. ctW :: (NumConvert b a, Num a, Integral b) => b -> a -- | Explicit error if the input is out-of-bounds. ctE :: NumConvert b a => b -> Either ArithException a -- | Explicit error if the input is out-of-bounds. ctE :: (NumConvert b a, Integral a, Bounded a, Integral b) => b -> Either ArithException a -- | Output minBound if the input is too small, or maxBound -- if too large. ctS :: NumConvert b a => b -> a -- | Output minBound if the input is too small, or maxBound -- if too large. ctS :: (NumConvert b a, Integral a, Bounded a, Integral b) => b -> a -- | Runtime (async) exception if the input is out-of-bounds. ctX :: (NumConvert b a, Partial) => b -> a -- | Runtime (async) exception if the input is out-of-bounds. ctX :: (NumConvert b a, Integral a, Bounded a, Integral b) => Partial => b -> a -- | Type alias for Word that explicitly states its lower-bound -- size. type Word29_ = Word -- | Type alias for Int that explicitly states its lower-bound size. type Int29_ = Int -- | Add with wrap-around. -- -- Same as + but indicates to the reader that you explicitly -- thought about this issue and decided that wrap-around is the correct -- behaviour. (+@) :: Num a => a -> a -> a infixl 6 +@ -- | Add with explicit error on overflow or underflow. (+%) :: (Integral a, Bounded a) => a -> a -> Either ArithException a infixl 6 +% -- | Add with output maxBound on overflow or minBound on -- underflow. (+:) :: (Integral a, Bounded a) => a -> a -> a infixl 6 +: -- | Add with runtime (async) exception on overflow or underflow. (+!) :: (Integral a, Bounded a) => Partial => a -> a -> a infixl 6 +! -- | Subtract with wrap-around. -- -- Same as - but indicates to the reader that you explicitly -- thought about this issue and decided that wrap-around is the correct -- behaviour. (-@) :: Num a => a -> a -> a infixl 6 -@ -- | Subtract with explicit error on overflow or underflow. (-%) :: (Integral a, Bounded a) => a -> a -> Either ArithException a infixl 6 -% -- | Subtract with output maxBound on overflow or minBound on -- underflow. (-:) :: (Integral a, Bounded a) => a -> a -> a infixl 6 -: -- | Subtract with runtime (async) exception on overflow or underflow. (-!) :: (Integral a, Bounded a) => Partial => a -> a -> a infixl 6 -! -- | Multiply with wrap-around. -- -- Same as * but indicates to the reader that you explicitly -- thought about this issue and decided that wrap-around is the correct -- behaviour. (*@) :: Num a => a -> a -> a infixl 7 *@ -- | Multiply with explicit error on overflow or underflow. (*%) :: (Integral a, Bounded a) => a -> a -> Either ArithException a infixl 7 *% -- | Multiply with output maxBound on overflow or minBound on -- underflow. (*:) :: (Integral a, Bounded a) => a -> a -> a infixl 7 *: -- | Multiply with runtime (async) exception on overflow or underflow. (*!) :: (Integral a, Bounded a) => Partial => a -> a -> a infixl 7 *! -- | Power with wrap-around. -- -- Same as ^ but indicates to the reader that you explicitly -- thought about this issue and decided that wrap-around is the correct -- behaviour. (^@) :: Integral a => a -> a -> a infixr 8 ^@ -- | Power with explicit error on overflow or underflow. (^%) :: (Integral a, Bounded a) => a -> a -> Either ArithException a infixr 8 ^% -- | Power with output maxBound on overflow or minBound on -- underflow. (^:) :: (Integral a, Bounded a) => a -> a -> a infixr 8 ^: -- | Power with runtime (async) exception on overflow or underflow. (^!) :: (Integral a, Bounded a) => Partial => a -> a -> a infixr 8 ^! -- | Type alias for a division-operation result with explicit error. -- -- The Left case means division by zero, and its -- parameter represents the sign of the nominator operand. type DivResult a = Either Ordering a -- | Division (truncated towards -Inf) with explicit error on -- division-by-zero. divE :: Integral a => a -> a -> DivResult a -- | Division (truncated towards -Inf) with runtime (async) exception on -- division-by-zero. -- -- Same as div but indicates to the reader that you explicitly -- thought about this issue and decided that runtime exception is the -- correct behaviour. divX :: Integral a => a -> a -> a -- | Modulus (truncated towards -Inf) with explicit error on -- division-by-zero. modE :: Integral a => a -> a -> DivResult a -- | Modulus (truncated towards -Inf) with runtime (async) exception on -- division-by-zero. -- -- Same as mod but indicates to the reader that you explicitly -- thought about this issue and decided that runtime exception is the -- correct behaviour. modX :: Integral a => a -> a -> a -- | Division-and-modulus (truncated towards -Inf) with explicit error on -- division-by-zero. divModE :: Integral a => a -> a -> DivResult (a, a) -- | Division-and-modulus (truncated towards -Inf) with runtime (async) -- exception on division-by-zero. -- -- Same as divMod but indicates to the reader that you explicitly -- thought about this issue and decided that runtime exception is the -- correct behaviour. divModX :: Integral a => a -> a -> (a, a) -- | Division (truncated towards 0) with explicit error on -- division-by-zero. quotE :: Integral a => a -> a -> DivResult a -- | Division (truncated towards 0) with runtime (async) exception on -- division-by-zero. -- -- Same as quot but indicates to the reader that you explicitly -- thought about this issue and decided that runtime exception is the -- correct behaviour. quotX :: Integral a => a -> a -> a -- | Modulus (truncated towards 0) with explicit error on division-by-zero. remE :: Integral a => a -> a -> DivResult a -- | Modulus (truncated towards 0) with runtime (async) exception on -- division-by-zero. -- -- Same as rem but indicates to the reader that you explicitly -- thought about this issue and decided that runtime exception is the -- correct behaviour. remX :: Integral a => a -> a -> a -- | Division-and-modulus (truncated towards 0) with explicit error on -- division-by-zero. quotRemE :: Integral a => a -> a -> DivResult (a, a) -- | Division-and-modulus (truncated towards 0) with runtime (async) -- exception on division-by-zero. -- -- Same as quotRem but indicates to the reader that you explicitly -- thought about this issue and decided that runtime exception is the -- correct behaviour. quotRemX :: Integral a => a -> a -> (a, a) instance Safe.Numeric.NumExpand GHC.Word.Word8 Safe.Numeric.Int29_ instance Safe.Numeric.NumExpand GHC.Word.Word16 Safe.Numeric.Int29_ instance Safe.Numeric.NumConvert Safe.Numeric.Word29_ Safe.Numeric.Int29_ instance Safe.Numeric.NumConvert GHC.Word.Word32 Safe.Numeric.Int29_ instance Safe.Numeric.NumConvert GHC.Word.Word64 Safe.Numeric.Int29_ instance Safe.Numeric.NumConvert Data.WideWord.Word128.Word128 Safe.Numeric.Int29_ instance Safe.Numeric.NumConvert Data.WideWord.Word256.Word256 Safe.Numeric.Int29_ instance Safe.Numeric.NumExpand GHC.Int.Int8 Safe.Numeric.Int29_ instance Safe.Numeric.NumExpand GHC.Int.Int16 Safe.Numeric.Int29_ instance Safe.Numeric.NumConvert Safe.Numeric.Int29_ GHC.Word.Word8 instance Safe.Numeric.NumConvert Safe.Numeric.Int29_ GHC.Word.Word16 instance Safe.Numeric.NumConvert Safe.Numeric.Int29_ Safe.Numeric.Word29_ instance Safe.Numeric.NumConvert Safe.Numeric.Int29_ GHC.Word.Word32 instance Safe.Numeric.NumConvert Safe.Numeric.Int29_ GHC.Word.Word64 instance Safe.Numeric.NumConvert Safe.Numeric.Int29_ Data.WideWord.Word128.Word128 instance Safe.Numeric.NumConvert Safe.Numeric.Int29_ Data.WideWord.Word256.Word256 instance Safe.Numeric.NumConvert Safe.Numeric.Int29_ GHC.Int.Int8 instance Safe.Numeric.NumConvert Safe.Numeric.Int29_ GHC.Int.Int16 instance Safe.Numeric.NumExpand Safe.Numeric.Int29_ Safe.Numeric.Int29_ instance Safe.Numeric.NumConvert Safe.Numeric.Int29_ GHC.Int.Int32 instance Safe.Numeric.NumConvert Safe.Numeric.Int29_ GHC.Int.Int64 instance Safe.Numeric.NumConvert Safe.Numeric.Int29_ Data.WideWord.Int128.Int128 instance Safe.Numeric.NumExpand Safe.Numeric.Int29_ GHC.Integer.Type.Integer instance Safe.Numeric.NumConvert GHC.Int.Int32 Safe.Numeric.Int29_ instance Safe.Numeric.NumConvert GHC.Int.Int64 Safe.Numeric.Int29_ instance Safe.Numeric.NumConvert Data.WideWord.Int128.Int128 Safe.Numeric.Int29_ instance Safe.Numeric.NumConvert GHC.Integer.Type.Integer Safe.Numeric.Int29_ instance Safe.Numeric.NumExpand GHC.Word.Word8 Safe.Numeric.Word29_ instance Safe.Numeric.NumExpand GHC.Word.Word16 Safe.Numeric.Word29_ instance Safe.Numeric.NumConvert Safe.Numeric.Word29_ GHC.Word.Word8 instance Safe.Numeric.NumConvert Safe.Numeric.Word29_ GHC.Word.Word16 instance Safe.Numeric.NumExpand Safe.Numeric.Word29_ Safe.Numeric.Word29_ instance Safe.Numeric.NumConvert Safe.Numeric.Word29_ GHC.Word.Word32 instance Safe.Numeric.NumConvert Safe.Numeric.Word29_ GHC.Word.Word64 instance Safe.Numeric.NumConvert Safe.Numeric.Word29_ Data.WideWord.Word128.Word128 instance Safe.Numeric.NumConvert Safe.Numeric.Word29_ Data.WideWord.Word256.Word256 instance Safe.Numeric.NumConvert Safe.Numeric.Word29_ GHC.Int.Int8 instance Safe.Numeric.NumConvert Safe.Numeric.Word29_ GHC.Int.Int16 instance Safe.Numeric.NumConvert Safe.Numeric.Word29_ GHC.Int.Int32 instance Safe.Numeric.NumConvert Safe.Numeric.Word29_ GHC.Int.Int64 instance Safe.Numeric.NumConvert Safe.Numeric.Word29_ Data.WideWord.Int128.Int128 instance Safe.Numeric.NumExpand Safe.Numeric.Word29_ GHC.Integer.Type.Integer instance Safe.Numeric.NumConvert GHC.Word.Word32 Safe.Numeric.Word29_ instance Safe.Numeric.NumConvert GHC.Word.Word64 Safe.Numeric.Word29_ instance Safe.Numeric.NumConvert Data.WideWord.Word128.Word128 Safe.Numeric.Word29_ instance Safe.Numeric.NumConvert Data.WideWord.Word256.Word256 Safe.Numeric.Word29_ instance Safe.Numeric.NumConvert GHC.Int.Int8 Safe.Numeric.Word29_ instance Safe.Numeric.NumConvert GHC.Int.Int16 Safe.Numeric.Word29_ instance Safe.Numeric.NumConvert GHC.Int.Int32 Safe.Numeric.Word29_ instance Safe.Numeric.NumConvert GHC.Int.Int64 Safe.Numeric.Word29_ instance Safe.Numeric.NumConvert Data.WideWord.Int128.Int128 Safe.Numeric.Word29_ instance Safe.Numeric.NumConvert GHC.Integer.Type.Integer Safe.Numeric.Word29_ instance Safe.Numeric.NumConvert GHC.Word.Word8 GHC.Int.Int8 instance Safe.Numeric.NumConvert GHC.Word.Word16 GHC.Word.Word8 instance Safe.Numeric.NumConvert GHC.Word.Word16 GHC.Int.Int8 instance Safe.Numeric.NumConvert GHC.Word.Word16 GHC.Int.Int16 instance Safe.Numeric.NumConvert GHC.Word.Word32 GHC.Word.Word8 instance Safe.Numeric.NumConvert GHC.Word.Word32 GHC.Word.Word16 instance Safe.Numeric.NumConvert GHC.Word.Word32 GHC.Int.Int8 instance Safe.Numeric.NumConvert GHC.Word.Word32 GHC.Int.Int16 instance Safe.Numeric.NumConvert GHC.Word.Word32 GHC.Int.Int32 instance Safe.Numeric.NumConvert GHC.Word.Word64 GHC.Word.Word8 instance Safe.Numeric.NumConvert GHC.Word.Word64 GHC.Word.Word16 instance Safe.Numeric.NumConvert GHC.Word.Word64 GHC.Word.Word32 instance Safe.Numeric.NumConvert GHC.Word.Word64 GHC.Int.Int8 instance Safe.Numeric.NumConvert GHC.Word.Word64 GHC.Int.Int16 instance Safe.Numeric.NumConvert GHC.Word.Word64 GHC.Int.Int32 instance Safe.Numeric.NumConvert GHC.Word.Word64 GHC.Int.Int64 instance Safe.Numeric.NumConvert Data.WideWord.Word128.Word128 GHC.Word.Word8 instance Safe.Numeric.NumConvert Data.WideWord.Word128.Word128 GHC.Word.Word16 instance Safe.Numeric.NumConvert Data.WideWord.Word128.Word128 GHC.Word.Word32 instance Safe.Numeric.NumConvert Data.WideWord.Word128.Word128 GHC.Word.Word64 instance Safe.Numeric.NumConvert Data.WideWord.Word128.Word128 GHC.Int.Int8 instance Safe.Numeric.NumConvert Data.WideWord.Word128.Word128 GHC.Int.Int16 instance Safe.Numeric.NumConvert Data.WideWord.Word128.Word128 GHC.Int.Int32 instance Safe.Numeric.NumConvert Data.WideWord.Word128.Word128 GHC.Int.Int64 instance Safe.Numeric.NumConvert Data.WideWord.Word128.Word128 Data.WideWord.Int128.Int128 instance Safe.Numeric.NumConvert Data.WideWord.Word256.Word256 GHC.Word.Word8 instance Safe.Numeric.NumConvert Data.WideWord.Word256.Word256 GHC.Word.Word16 instance Safe.Numeric.NumConvert Data.WideWord.Word256.Word256 GHC.Word.Word32 instance Safe.Numeric.NumConvert Data.WideWord.Word256.Word256 GHC.Word.Word64 instance Safe.Numeric.NumConvert Data.WideWord.Word256.Word256 Data.WideWord.Word128.Word128 instance Safe.Numeric.NumConvert Data.WideWord.Word256.Word256 GHC.Int.Int8 instance Safe.Numeric.NumConvert Data.WideWord.Word256.Word256 GHC.Int.Int16 instance Safe.Numeric.NumConvert Data.WideWord.Word256.Word256 GHC.Int.Int32 instance Safe.Numeric.NumConvert Data.WideWord.Word256.Word256 GHC.Int.Int64 instance Safe.Numeric.NumConvert Data.WideWord.Word256.Word256 Data.WideWord.Int128.Int128 instance Safe.Numeric.NumConvert GHC.Int.Int8 GHC.Word.Word8 instance Safe.Numeric.NumConvert GHC.Int.Int8 GHC.Word.Word16 instance Safe.Numeric.NumConvert GHC.Int.Int8 GHC.Word.Word32 instance Safe.Numeric.NumConvert GHC.Int.Int8 GHC.Word.Word64 instance Safe.Numeric.NumConvert GHC.Int.Int8 Data.WideWord.Word128.Word128 instance Safe.Numeric.NumConvert GHC.Int.Int8 Data.WideWord.Word256.Word256 instance Safe.Numeric.NumConvert GHC.Int.Int16 GHC.Word.Word8 instance Safe.Numeric.NumConvert GHC.Int.Int16 GHC.Word.Word16 instance Safe.Numeric.NumConvert GHC.Int.Int16 GHC.Word.Word32 instance Safe.Numeric.NumConvert GHC.Int.Int16 GHC.Word.Word64 instance Safe.Numeric.NumConvert GHC.Int.Int16 Data.WideWord.Word128.Word128 instance Safe.Numeric.NumConvert GHC.Int.Int16 Data.WideWord.Word256.Word256 instance Safe.Numeric.NumConvert GHC.Int.Int16 GHC.Int.Int8 instance Safe.Numeric.NumConvert GHC.Int.Int32 GHC.Word.Word8 instance Safe.Numeric.NumConvert GHC.Int.Int32 GHC.Word.Word16 instance Safe.Numeric.NumConvert GHC.Int.Int32 GHC.Word.Word32 instance Safe.Numeric.NumConvert GHC.Int.Int32 GHC.Word.Word64 instance Safe.Numeric.NumConvert GHC.Int.Int32 Data.WideWord.Word128.Word128 instance Safe.Numeric.NumConvert GHC.Int.Int32 Data.WideWord.Word256.Word256 instance Safe.Numeric.NumConvert GHC.Int.Int32 GHC.Int.Int8 instance Safe.Numeric.NumConvert GHC.Int.Int32 GHC.Int.Int16 instance Safe.Numeric.NumConvert GHC.Int.Int64 GHC.Word.Word8 instance Safe.Numeric.NumConvert GHC.Int.Int64 GHC.Word.Word16 instance Safe.Numeric.NumConvert GHC.Int.Int64 GHC.Word.Word32 instance Safe.Numeric.NumConvert GHC.Int.Int64 GHC.Word.Word64 instance Safe.Numeric.NumConvert GHC.Int.Int64 Data.WideWord.Word128.Word128 instance Safe.Numeric.NumConvert GHC.Int.Int64 Data.WideWord.Word256.Word256 instance Safe.Numeric.NumConvert GHC.Int.Int64 GHC.Int.Int8 instance Safe.Numeric.NumConvert GHC.Int.Int64 GHC.Int.Int16 instance Safe.Numeric.NumConvert GHC.Int.Int64 GHC.Int.Int32 instance Safe.Numeric.NumConvert Data.WideWord.Int128.Int128 GHC.Word.Word8 instance Safe.Numeric.NumConvert Data.WideWord.Int128.Int128 GHC.Word.Word16 instance Safe.Numeric.NumConvert Data.WideWord.Int128.Int128 GHC.Word.Word32 instance Safe.Numeric.NumConvert Data.WideWord.Int128.Int128 GHC.Word.Word64 instance Safe.Numeric.NumConvert Data.WideWord.Int128.Int128 Data.WideWord.Word128.Word128 instance Safe.Numeric.NumConvert Data.WideWord.Int128.Int128 Data.WideWord.Word256.Word256 instance Safe.Numeric.NumConvert Data.WideWord.Int128.Int128 GHC.Int.Int8 instance Safe.Numeric.NumConvert Data.WideWord.Int128.Int128 GHC.Int.Int16 instance Safe.Numeric.NumConvert Data.WideWord.Int128.Int128 GHC.Int.Int32 instance Safe.Numeric.NumConvert Data.WideWord.Int128.Int128 GHC.Int.Int64 instance Safe.Numeric.NumConvert GHC.Integer.Type.Integer GHC.Word.Word8 instance Safe.Numeric.NumConvert GHC.Integer.Type.Integer GHC.Word.Word16 instance Safe.Numeric.NumConvert GHC.Integer.Type.Integer GHC.Word.Word32 instance Safe.Numeric.NumConvert GHC.Integer.Type.Integer GHC.Word.Word64 instance Safe.Numeric.NumConvert GHC.Integer.Type.Integer Data.WideWord.Word128.Word128 instance Safe.Numeric.NumConvert GHC.Integer.Type.Integer Data.WideWord.Word256.Word256 instance Safe.Numeric.NumConvert GHC.Integer.Type.Integer GHC.Int.Int8 instance Safe.Numeric.NumConvert GHC.Integer.Type.Integer GHC.Int.Int16 instance Safe.Numeric.NumConvert GHC.Integer.Type.Integer GHC.Int.Int32 instance Safe.Numeric.NumConvert GHC.Integer.Type.Integer GHC.Int.Int64 instance Safe.Numeric.NumConvert GHC.Integer.Type.Integer Data.WideWord.Int128.Int128 instance Safe.Numeric.NumExpand GHC.Word.Word8 GHC.Word.Word8 instance Safe.Numeric.NumExpand GHC.Word.Word8 GHC.Word.Word16 instance Safe.Numeric.NumExpand GHC.Word.Word8 GHC.Word.Word32 instance Safe.Numeric.NumExpand GHC.Word.Word8 GHC.Word.Word64 instance Safe.Numeric.NumExpand GHC.Word.Word8 Data.WideWord.Word128.Word128 instance Safe.Numeric.NumExpand GHC.Word.Word8 Data.WideWord.Word256.Word256 instance Safe.Numeric.NumExpand GHC.Word.Word8 GHC.Int.Int16 instance Safe.Numeric.NumExpand GHC.Word.Word8 GHC.Int.Int32 instance Safe.Numeric.NumExpand GHC.Word.Word8 GHC.Int.Int64 instance Safe.Numeric.NumExpand GHC.Word.Word8 Data.WideWord.Int128.Int128 instance Safe.Numeric.NumExpand GHC.Word.Word8 GHC.Integer.Type.Integer instance Safe.Numeric.NumExpand GHC.Word.Word16 GHC.Word.Word16 instance Safe.Numeric.NumExpand GHC.Word.Word16 GHC.Word.Word32 instance Safe.Numeric.NumExpand GHC.Word.Word16 GHC.Word.Word64 instance Safe.Numeric.NumExpand GHC.Word.Word16 Data.WideWord.Word128.Word128 instance Safe.Numeric.NumExpand GHC.Word.Word16 Data.WideWord.Word256.Word256 instance Safe.Numeric.NumExpand GHC.Word.Word16 GHC.Int.Int32 instance Safe.Numeric.NumExpand GHC.Word.Word16 GHC.Int.Int64 instance Safe.Numeric.NumExpand GHC.Word.Word16 Data.WideWord.Int128.Int128 instance Safe.Numeric.NumExpand GHC.Word.Word16 GHC.Integer.Type.Integer instance Safe.Numeric.NumExpand GHC.Word.Word32 GHC.Word.Word32 instance Safe.Numeric.NumExpand GHC.Word.Word32 GHC.Word.Word64 instance Safe.Numeric.NumExpand GHC.Word.Word32 Data.WideWord.Word128.Word128 instance Safe.Numeric.NumExpand GHC.Word.Word32 Data.WideWord.Word256.Word256 instance Safe.Numeric.NumExpand GHC.Word.Word32 GHC.Int.Int64 instance Safe.Numeric.NumExpand GHC.Word.Word32 Data.WideWord.Int128.Int128 instance Safe.Numeric.NumExpand GHC.Word.Word32 GHC.Integer.Type.Integer instance Safe.Numeric.NumExpand GHC.Word.Word64 GHC.Word.Word64 instance Safe.Numeric.NumExpand GHC.Word.Word64 Data.WideWord.Word128.Word128 instance Safe.Numeric.NumExpand GHC.Word.Word64 Data.WideWord.Word256.Word256 instance Safe.Numeric.NumExpand GHC.Word.Word64 Data.WideWord.Int128.Int128 instance Safe.Numeric.NumExpand GHC.Word.Word64 GHC.Integer.Type.Integer instance Safe.Numeric.NumExpand Data.WideWord.Word128.Word128 Data.WideWord.Word128.Word128 instance Safe.Numeric.NumExpand Data.WideWord.Word128.Word128 Data.WideWord.Word256.Word256 instance Safe.Numeric.NumExpand Data.WideWord.Word128.Word128 GHC.Integer.Type.Integer instance Safe.Numeric.NumExpand Data.WideWord.Word256.Word256 Data.WideWord.Word256.Word256 instance Safe.Numeric.NumExpand Data.WideWord.Word256.Word256 GHC.Integer.Type.Integer instance Safe.Numeric.NumExpand GHC.Int.Int8 GHC.Int.Int8 instance Safe.Numeric.NumExpand GHC.Int.Int8 GHC.Int.Int16 instance Safe.Numeric.NumExpand GHC.Int.Int8 GHC.Int.Int32 instance Safe.Numeric.NumExpand GHC.Int.Int8 GHC.Int.Int64 instance Safe.Numeric.NumExpand GHC.Int.Int8 Data.WideWord.Int128.Int128 instance Safe.Numeric.NumExpand GHC.Int.Int8 GHC.Integer.Type.Integer instance Safe.Numeric.NumExpand GHC.Int.Int16 GHC.Int.Int16 instance Safe.Numeric.NumExpand GHC.Int.Int16 GHC.Int.Int32 instance Safe.Numeric.NumExpand GHC.Int.Int16 GHC.Int.Int64 instance Safe.Numeric.NumExpand GHC.Int.Int16 Data.WideWord.Int128.Int128 instance Safe.Numeric.NumExpand GHC.Int.Int16 GHC.Integer.Type.Integer instance Safe.Numeric.NumExpand GHC.Int.Int32 GHC.Int.Int32 instance Safe.Numeric.NumExpand GHC.Int.Int32 GHC.Int.Int64 instance Safe.Numeric.NumExpand GHC.Int.Int32 Data.WideWord.Int128.Int128 instance Safe.Numeric.NumExpand GHC.Int.Int32 GHC.Integer.Type.Integer instance Safe.Numeric.NumExpand GHC.Int.Int64 GHC.Int.Int64 instance Safe.Numeric.NumExpand GHC.Int.Int64 Data.WideWord.Int128.Int128 instance Safe.Numeric.NumExpand GHC.Int.Int64 GHC.Integer.Type.Integer instance Safe.Numeric.NumExpand Data.WideWord.Int128.Int128 Data.WideWord.Int128.Int128 instance Safe.Numeric.NumExpand Data.WideWord.Int128.Int128 GHC.Integer.Type.Integer instance Safe.Numeric.NumExpand GHC.Integer.Type.Integer GHC.Integer.Type.Integer