Movatterモバイル変換
[0]ホーム
{-# LANGUAGE Trustworthy #-}{-# LANGUAGE CPP, NoImplicitPrelude, BangPatterns, MagicHash, UnboxedTuples #-}{-# OPTIONS_HADDOCK not-home #-}------------------------------------------------------------------------------- |-- Module : GHC.Word-- Copyright : (c) The University of Glasgow, 1997-2002-- License : see libraries/base/LICENSE---- Maintainer : cvs-ghc@haskell.org-- Stability : internal-- Portability : non-portable (GHC Extensions)---- Sized unsigned integral types: 'Word', 'Word8', 'Word16', 'Word32', and-- 'Word64'.-------------------------------------------------------------------------------#include "MachDeps.h"moduleGHC.Word(Word(..),Word8(..),Word16(..),Word32(..),Word64(..),-- * ShiftsuncheckedShiftL64#,uncheckedShiftRL64#,-- * Byte swappingbyteSwap16,byteSwap32,byteSwap64,-- * Bit reversalbitReverse8,bitReverse16,bitReverse32,bitReverse64,-- * Equality operators-- | See GHC.Classes#matching_overloaded_methods_in_ruleseqWord,neWord,gtWord,geWord,ltWord,leWord,eqWord8,neWord8,gtWord8,geWord8,ltWord8,leWord8,eqWord16,neWord16,gtWord16,geWord16,ltWord16,leWord16,eqWord32,neWord32,gtWord32,geWord32,ltWord32,leWord32,eqWord64,neWord64,gtWord64,geWord64,ltWord64,leWord64)whereimportData.BitsimportData.Maybe#if WORD_SIZE_IN_BITS < 64importGHC.IntWord64#endifimportGHC.BaseimportGHC.EnumimportGHC.NumimportGHC.RealimportGHC.IximportGHC.Show-------------------------------------------------------------------------- type Word8-------------------------------------------------------------------------- Word8 is represented in the same way as Word. Operations may assume-- and must ensure that it holds only values from its logical range.data{-# CTYPE"HsWord8"#-}Word8=W8#Word#-- ^ 8-bit unsigned integer type-- See GHC.Classes#matching_overloaded_methods_in_rules-- | @since 2.01instanceEqWord8where== :: Word8 -> Word8 -> Bool(==)=Word8 -> Word8 -> BooleqWord8/= :: Word8 -> Word8 -> Bool(/=)=Word8 -> Word8 -> BoolneWord8eqWord8,neWord8::Word8->Word8->BooleqWord8 :: Word8 -> Word8 -> BooleqWord8(W8#Word#x)(W8#Word#y)=Int# -> BoolisTrue#(Word#xWord# -> Word# -> Int#`eqWord#`Word#y)neWord8 :: Word8 -> Word8 -> BoolneWord8(W8#Word#x)(W8#Word#y)=Int# -> BoolisTrue#(Word#xWord# -> Word# -> Int#`neWord#`Word#y){-# INLINE[1]eqWord8#-}{-# INLINE[1]neWord8#-}-- | @since 2.01instanceOrdWord8where< :: Word8 -> Word8 -> Bool(<)=Word8 -> Word8 -> BoolltWord8<= :: Word8 -> Word8 -> Bool(<=)=Word8 -> Word8 -> BoolleWord8>= :: Word8 -> Word8 -> Bool(>=)=Word8 -> Word8 -> BoolgeWord8> :: Word8 -> Word8 -> Bool(>)=Word8 -> Word8 -> BoolgtWord8{-# INLINE[1]gtWord8#-}{-# INLINE[1]geWord8#-}{-# INLINE[1]ltWord8#-}{-# INLINE[1]leWord8#-}gtWord8,geWord8,ltWord8,leWord8::Word8->Word8->Bool(W8#Word#x)gtWord8 :: Word8 -> Word8 -> Bool`gtWord8`(W8#Word#y)=Int# -> BoolisTrue#(Word#xWord# -> Word# -> Int#`gtWord#`Word#y)(W8#Word#x)geWord8 :: Word8 -> Word8 -> Bool`geWord8`(W8#Word#y)=Int# -> BoolisTrue#(Word#xWord# -> Word# -> Int#`geWord#`Word#y)(W8#Word#x)ltWord8 :: Word8 -> Word8 -> Bool`ltWord8`(W8#Word#y)=Int# -> BoolisTrue#(Word#xWord# -> Word# -> Int#`ltWord#`Word#y)(W8#Word#x)leWord8 :: Word8 -> Word8 -> Bool`leWord8`(W8#Word#y)=Int# -> BoolisTrue#(Word#xWord# -> Word# -> Int#`leWord#`Word#y)-- | @since 2.01instanceShowWord8whereshowsPrec :: Int -> Word8 -> ShowSshowsPrecIntpWord8x=Int -> Int -> ShowSforall a. Show a => Int -> a -> ShowSshowsPrecIntp(Word8 -> Intforall a b. (Integral a, Num b) => a -> bfromIntegralWord8x::Int)-- | @since 2.01instanceNumWord8where(W8#Word#x#)+ :: Word8 -> Word8 -> Word8+(W8#Word#y#)=Word# -> Word8W8#(Word# -> Word#narrow8Word#(Word#x#Word# -> Word# -> Word#`plusWord#`Word#y#))(W8#Word#x#)- :: Word8 -> Word8 -> Word8-(W8#Word#y#)=Word# -> Word8W8#(Word# -> Word#narrow8Word#(Word#x#Word# -> Word# -> Word#`minusWord#`Word#y#))(W8#Word#x#)* :: Word8 -> Word8 -> Word8*(W8#Word#y#)=Word# -> Word8W8#(Word# -> Word#narrow8Word#(Word#x#Word# -> Word# -> Word#`timesWord#`Word#y#))negate :: Word8 -> Word8negate(W8#Word#x#)=Word# -> Word8W8#(Word# -> Word#narrow8Word#(Int# -> Word#int2Word#(Int# -> Int#negateInt#(Word# -> Int#word2Int#Word#x#))))abs :: Word8 -> Word8absWord8x=Word8xsignum :: Word8 -> Word8signumWord80=Word80signumWord8_=Word81fromInteger :: Integer -> Word8fromIntegerIntegeri=Word# -> Word8W8#(Word# -> Word#narrow8Word#(Integer -> Word#integerToWordIntegeri))-- | @since 2.01instanceRealWord8wheretoRational :: Word8 -> RationaltoRationalWord8x=Word8 -> Integerforall a. Integral a => a -> IntegertoIntegerWord8xInteger -> Integer -> Rationalforall a. Integral a => a -> a -> Ratio a%Integer1-- | @since 2.01instanceEnumWord8wheresucc :: Word8 -> Word8succWord8x|Word8xWord8 -> Word8 -> Boolforall a. Eq a => a -> a -> Bool/=Word8forall a. Bounded a => amaxBound=Word8xWord8 -> Word8 -> Word8forall a. Num a => a -> a -> a+Word81|Boolotherwise=String -> Word8forall a. String -> asuccErrorString"Word8"pred :: Word8 -> Word8predWord8x|Word8xWord8 -> Word8 -> Boolforall a. Eq a => a -> a -> Bool/=Word8forall a. Bounded a => aminBound=Word8xWord8 -> Word8 -> Word8forall a. Num a => a -> a -> a-Word81|Boolotherwise=String -> Word8forall a. String -> apredErrorString"Word8"toEnum :: Int -> Word8toEnumi :: Inti@(I#Int#i#)|IntiInt -> Int -> Boolforall a. Ord a => a -> a -> Bool>=Int0Bool -> Bool -> Bool&&IntiInt -> Int -> Boolforall a. Ord a => a -> a -> Bool<=Word8 -> Intforall a b. (Integral a, Num b) => a -> bfromIntegral(Word8forall a. Bounded a => amaxBound::Word8)=Word# -> Word8W8#(Int# -> Word#int2Word#Int#i#)|Boolotherwise=String -> Int -> (Word8, Word8) -> Word8forall a b. Show a => String -> Int -> (a, a) -> btoEnumErrorString"Word8"Inti(Word8forall a. Bounded a => aminBound::Word8,Word8forall a. Bounded a => amaxBound::Word8)fromEnum :: Word8 -> IntfromEnum(W8#Word#x#)=Int# -> IntI#(Word# -> Int#word2Int#Word#x#)enumFrom :: Word8 -> [Word8]enumFrom=Word8 -> [Word8]forall a. (Enum a, Bounded a) => a -> [a]boundedEnumFromenumFromThen :: Word8 -> Word8 -> [Word8]enumFromThen=Word8 -> Word8 -> [Word8]forall a. (Enum a, Bounded a) => a -> a -> [a]boundedEnumFromThen-- | @since 2.01instanceIntegralWord8wherequot :: Word8 -> Word8 -> Word8quot(W8#Word#x#)y :: Word8y@(W8#Word#y#)|Word8yWord8 -> Word8 -> Boolforall a. Eq a => a -> a -> Bool/=Word80=Word# -> Word8W8#(Word#x#Word# -> Word# -> Word#`quotWord#`Word#y#)|Boolotherwise=Word8forall a. adivZeroErrorrem :: Word8 -> Word8 -> Word8rem(W8#Word#x#)y :: Word8y@(W8#Word#y#)|Word8yWord8 -> Word8 -> Boolforall a. Eq a => a -> a -> Bool/=Word80=Word# -> Word8W8#(Word#x#Word# -> Word# -> Word#`remWord#`Word#y#)|Boolotherwise=Word8forall a. adivZeroErrordiv :: Word8 -> Word8 -> Word8div(W8#Word#x#)y :: Word8y@(W8#Word#y#)|Word8yWord8 -> Word8 -> Boolforall a. Eq a => a -> a -> Bool/=Word80=Word# -> Word8W8#(Word#x#Word# -> Word# -> Word#`quotWord#`Word#y#)|Boolotherwise=Word8forall a. adivZeroErrormod :: Word8 -> Word8 -> Word8mod(W8#Word#x#)y :: Word8y@(W8#Word#y#)|Word8yWord8 -> Word8 -> Boolforall a. Eq a => a -> a -> Bool/=Word80=Word# -> Word8W8#(Word#x#Word# -> Word# -> Word#`remWord#`Word#y#)|Boolotherwise=Word8forall a. adivZeroErrorquotRem :: Word8 -> Word8 -> (Word8, Word8)quotRem(W8#Word#x#)y :: Word8y@(W8#Word#y#)|Word8yWord8 -> Word8 -> Boolforall a. Eq a => a -> a -> Bool/=Word80=caseWord#x#Word# -> Word# -> (# Word#, Word# #)`quotRemWord#`Word#y#of(#Word#q,Word#r#)->(Word# -> Word8W8#Word#q,Word# -> Word8W8#Word#r)|Boolotherwise=(Word8, Word8)forall a. adivZeroErrordivMod :: Word8 -> Word8 -> (Word8, Word8)divMod(W8#Word#x#)y :: Word8y@(W8#Word#y#)|Word8yWord8 -> Word8 -> Boolforall a. Eq a => a -> a -> Bool/=Word80=(Word# -> Word8W8#(Word#x#Word# -> Word# -> Word#`quotWord#`Word#y#),Word# -> Word8W8#(Word#x#Word# -> Word# -> Word#`remWord#`Word#y#))|Boolotherwise=(Word8, Word8)forall a. adivZeroErrortoInteger :: Word8 -> IntegertoInteger(W8#Word#x#)=Int# -> IntegersmallInteger(Word# -> Int#word2Int#Word#x#)-- | @since 2.01instanceBoundedWord8whereminBound :: Word8minBound=Word80maxBound :: Word8maxBound=Word80xFF-- | @since 2.01instanceIxWord8whererange :: (Word8, Word8) -> [Word8]range(Word8m,Word8n)=[Word8m..Word8n]unsafeIndex :: (Word8, Word8) -> Word8 -> IntunsafeIndex(Word8m,Word8_)Word8i=Word8 -> Intforall a b. (Integral a, Num b) => a -> bfromIntegral(Word8iWord8 -> Word8 -> Word8forall a. Num a => a -> a -> a-Word8m)inRange :: (Word8, Word8) -> Word8 -> BoolinRange(Word8m,Word8n)Word8i=Word8mWord8 -> Word8 -> Boolforall a. Ord a => a -> a -> Bool<=Word8iBool -> Bool -> Bool&&Word8iWord8 -> Word8 -> Boolforall a. Ord a => a -> a -> Bool<=Word8n-- | @since 2.01instanceBitsWord8where{-# INLINEshift#-}{-# INLINEbit#-}{-# INLINEtestBit#-}{-# INLINEpopCount#-}(W8#Word#x#).&. :: Word8 -> Word8 -> Word8.&.(W8#Word#y#)=Word# -> Word8W8#(Word#x#Word# -> Word# -> Word#`and#`Word#y#)(W8#Word#x#).|. :: Word8 -> Word8 -> Word8.|.(W8#Word#y#)=Word# -> Word8W8#(Word#x#Word# -> Word# -> Word#`or#`Word#y#)(W8#Word#x#)xor :: Word8 -> Word8 -> Word8`xor`(W8#Word#y#)=Word# -> Word8W8#(Word#x#Word# -> Word# -> Word#`xor#`Word#y#)complement :: Word8 -> Word8complement(W8#Word#x#)=Word# -> Word8W8#(Word#x#Word# -> Word# -> Word#`xor#`Word#mb#)where!(W8#Word#mb#)=Word8forall a. Bounded a => amaxBound(W8#Word#x#)shift :: Word8 -> Int -> Word8`shift`(I#Int#i#)|Int# -> BoolisTrue#(Int#i#Int# -> Int# -> Int#>=#Int#0#)=Word# -> Word8W8#(Word# -> Word#narrow8Word#(Word#x#Word# -> Int# -> Word#`shiftL#`Int#i#))|Boolotherwise=Word# -> Word8W8#(Word#x#Word# -> Int# -> Word#`shiftRL#`Int# -> Int#negateInt#Int#i#)(W8#Word#x#)shiftL :: Word8 -> Int -> Word8`shiftL`(I#Int#i#)|Int# -> BoolisTrue#(Int#i#Int# -> Int# -> Int#>=#Int#0#)=Word# -> Word8W8#(Word# -> Word#narrow8Word#(Word#x#Word# -> Int# -> Word#`shiftL#`Int#i#))|Boolotherwise=Word8forall a. aoverflowError(W8#Word#x#)unsafeShiftL :: Word8 -> Int -> Word8`unsafeShiftL`(I#Int#i#)=Word# -> Word8W8#(Word# -> Word#narrow8Word#(Word#x#Word# -> Int# -> Word#`uncheckedShiftL#`Int#i#))(W8#Word#x#)shiftR :: Word8 -> Int -> Word8`shiftR`(I#Int#i#)|Int# -> BoolisTrue#(Int#i#Int# -> Int# -> Int#>=#Int#0#)=Word# -> Word8W8#(Word#x#Word# -> Int# -> Word#`shiftRL#`Int#i#)|Boolotherwise=Word8forall a. aoverflowError(W8#Word#x#)unsafeShiftR :: Word8 -> Int -> Word8`unsafeShiftR`(I#Int#i#)=Word# -> Word8W8#(Word#x#Word# -> Int# -> Word#`uncheckedShiftRL#`Int#i#)(W8#Word#x#)rotate :: Word8 -> Int -> Word8`rotate`(I#Int#i#)|Int# -> BoolisTrue#(Int#i'#Int# -> Int# -> Int#==#Int#0#)=Word# -> Word8W8#Word#x#|Boolotherwise=Word# -> Word8W8#(Word# -> Word#narrow8Word#((Word#x#Word# -> Int# -> Word#`uncheckedShiftL#`Int#i'#)Word# -> Word# -> Word#`or#`(Word#x#Word# -> Int# -> Word#`uncheckedShiftRL#`(Int#8#Int# -> Int# -> Int#-#Int#i'#))))where!i'# :: Int#i'#=Word# -> Int#word2Int#(Int# -> Word#int2Word#Int#i#Word# -> Word# -> Word#`and#`Word#7##)bitSizeMaybe :: Word8 -> Maybe IntbitSizeMaybeWord8i=Int -> Maybe Intforall a. a -> Maybe aJust(Word8 -> Intforall b. FiniteBits b => b -> IntfiniteBitSizeWord8i)bitSize :: Word8 -> IntbitSizeWord8i=Word8 -> Intforall b. FiniteBits b => b -> IntfiniteBitSizeWord8iisSigned :: Word8 -> BoolisSignedWord8_=BoolFalsepopCount :: Word8 -> IntpopCount(W8#Word#x#)=Int# -> IntI#(Word# -> Int#word2Int#(Word# -> Word#popCnt8#Word#x#))bit :: Int -> Word8bit=Int -> Word8forall a. (Bits a, Num a) => Int -> abitDefaulttestBit :: Word8 -> Int -> BooltestBit=Word8 -> Int -> Boolforall a. (Bits a, Num a) => a -> Int -> BooltestBitDefault-- | @since 4.6.0.0instanceFiniteBitsWord8where{-# INLINEcountLeadingZeros#-}{-# INLINEcountTrailingZeros#-}finiteBitSize :: Word8 -> IntfiniteBitSizeWord8_=Int8countLeadingZeros :: Word8 -> IntcountLeadingZeros(W8#Word#x#)=Int# -> IntI#(Word# -> Int#word2Int#(Word# -> Word#clz8#Word#x#))countTrailingZeros :: Word8 -> IntcountTrailingZeros(W8#Word#x#)=Int# -> IntI#(Word# -> Int#word2Int#(Word# -> Word#ctz8#Word#x#)){-# RULES"fromIntegral/Word8->Word8"fromIntegral=id::Word8->Word8"fromIntegral/Word8->Integer"fromIntegral=toInteger::Word8->Integer"fromIntegral/a->Word8"fromIntegral=\x->casefromIntegralxofW#x#->W8#(narrow8Word#x#)"fromIntegral/Word8->a"fromIntegral=\(W8#x#)->fromIntegral(W#x#)#-}{-# RULES"properFraction/Float->(Word8,Float)"properFraction=\x->caseproperFractionxof{(n,y)->((fromIntegral::Int->Word8)n,y::Float)}"truncate/Float->Word8"truncate=(fromIntegral::Int->Word8).(truncate::Float->Int)"floor/Float->Word8"floor=(fromIntegral::Int->Word8).(floor::Float->Int)"ceiling/Float->Word8"ceiling=(fromIntegral::Int->Word8).(ceiling::Float->Int)"round/Float->Word8"round=(fromIntegral::Int->Word8).(round::Float->Int)#-}{-# RULES"properFraction/Double->(Word8,Double)"properFraction=\x->caseproperFractionxof{(n,y)->((fromIntegral::Int->Word8)n,y::Double)}"truncate/Double->Word8"truncate=(fromIntegral::Int->Word8).(truncate::Double->Int)"floor/Double->Word8"floor=(fromIntegral::Int->Word8).(floor::Double->Int)"ceiling/Double->Word8"ceiling=(fromIntegral::Int->Word8).(ceiling::Double->Int)"round/Double->Word8"round=(fromIntegral::Int->Word8).(round::Double->Int)#-}-------------------------------------------------------------------------- type Word16-------------------------------------------------------------------------- Word16 is represented in the same way as Word. Operations may assume-- and must ensure that it holds only values from its logical range.data{-# CTYPE"HsWord16"#-}Word16=W16#Word#-- ^ 16-bit unsigned integer type-- See GHC.Classes#matching_overloaded_methods_in_rules-- | @since 2.01instanceEqWord16where== :: Word16 -> Word16 -> Bool(==)=Word16 -> Word16 -> BooleqWord16/= :: Word16 -> Word16 -> Bool(/=)=Word16 -> Word16 -> BoolneWord16eqWord16,neWord16::Word16->Word16->BooleqWord16 :: Word16 -> Word16 -> BooleqWord16(W16#Word#x)(W16#Word#y)=Int# -> BoolisTrue#(Word#xWord# -> Word# -> Int#`eqWord#`Word#y)neWord16 :: Word16 -> Word16 -> BoolneWord16(W16#Word#x)(W16#Word#y)=Int# -> BoolisTrue#(Word#xWord# -> Word# -> Int#`neWord#`Word#y){-# INLINE[1]eqWord16#-}{-# INLINE[1]neWord16#-}-- | @since 2.01instanceOrdWord16where< :: Word16 -> Word16 -> Bool(<)=Word16 -> Word16 -> BoolltWord16<= :: Word16 -> Word16 -> Bool(<=)=Word16 -> Word16 -> BoolleWord16>= :: Word16 -> Word16 -> Bool(>=)=Word16 -> Word16 -> BoolgeWord16> :: Word16 -> Word16 -> Bool(>)=Word16 -> Word16 -> BoolgtWord16{-# INLINE[1]gtWord16#-}{-# INLINE[1]geWord16#-}{-# INLINE[1]ltWord16#-}{-# INLINE[1]leWord16#-}gtWord16,geWord16,ltWord16,leWord16::Word16->Word16->Bool(W16#Word#x)gtWord16 :: Word16 -> Word16 -> Bool`gtWord16`(W16#Word#y)=Int# -> BoolisTrue#(Word#xWord# -> Word# -> Int#`gtWord#`Word#y)(W16#Word#x)geWord16 :: Word16 -> Word16 -> Bool`geWord16`(W16#Word#y)=Int# -> BoolisTrue#(Word#xWord# -> Word# -> Int#`geWord#`Word#y)(W16#Word#x)ltWord16 :: Word16 -> Word16 -> Bool`ltWord16`(W16#Word#y)=Int# -> BoolisTrue#(Word#xWord# -> Word# -> Int#`ltWord#`Word#y)(W16#Word#x)leWord16 :: Word16 -> Word16 -> Bool`leWord16`(W16#Word#y)=Int# -> BoolisTrue#(Word#xWord# -> Word# -> Int#`leWord#`Word#y)-- | @since 2.01instanceShowWord16whereshowsPrec :: Int -> Word16 -> ShowSshowsPrecIntpWord16x=Int -> Int -> ShowSforall a. Show a => Int -> a -> ShowSshowsPrecIntp(Word16 -> Intforall a b. (Integral a, Num b) => a -> bfromIntegralWord16x::Int)-- | @since 2.01instanceNumWord16where(W16#Word#x#)+ :: Word16 -> Word16 -> Word16+(W16#Word#y#)=Word# -> Word16W16#(Word# -> Word#narrow16Word#(Word#x#Word# -> Word# -> Word#`plusWord#`Word#y#))(W16#Word#x#)- :: Word16 -> Word16 -> Word16-(W16#Word#y#)=Word# -> Word16W16#(Word# -> Word#narrow16Word#(Word#x#Word# -> Word# -> Word#`minusWord#`Word#y#))(W16#Word#x#)* :: Word16 -> Word16 -> Word16*(W16#Word#y#)=Word# -> Word16W16#(Word# -> Word#narrow16Word#(Word#x#Word# -> Word# -> Word#`timesWord#`Word#y#))negate :: Word16 -> Word16negate(W16#Word#x#)=Word# -> Word16W16#(Word# -> Word#narrow16Word#(Int# -> Word#int2Word#(Int# -> Int#negateInt#(Word# -> Int#word2Int#Word#x#))))abs :: Word16 -> Word16absWord16x=Word16xsignum :: Word16 -> Word16signumWord160=Word160signumWord16_=Word161fromInteger :: Integer -> Word16fromIntegerIntegeri=Word# -> Word16W16#(Word# -> Word#narrow16Word#(Integer -> Word#integerToWordIntegeri))-- | @since 2.01instanceRealWord16wheretoRational :: Word16 -> RationaltoRationalWord16x=Word16 -> Integerforall a. Integral a => a -> IntegertoIntegerWord16xInteger -> Integer -> Rationalforall a. Integral a => a -> a -> Ratio a%Integer1-- | @since 2.01instanceEnumWord16wheresucc :: Word16 -> Word16succWord16x|Word16xWord16 -> Word16 -> Boolforall a. Eq a => a -> a -> Bool/=Word16forall a. Bounded a => amaxBound=Word16xWord16 -> Word16 -> Word16forall a. Num a => a -> a -> a+Word161|Boolotherwise=String -> Word16forall a. String -> asuccErrorString"Word16"pred :: Word16 -> Word16predWord16x|Word16xWord16 -> Word16 -> Boolforall a. Eq a => a -> a -> Bool/=Word16forall a. Bounded a => aminBound=Word16xWord16 -> Word16 -> Word16forall a. Num a => a -> a -> a-Word161|Boolotherwise=String -> Word16forall a. String -> apredErrorString"Word16"toEnum :: Int -> Word16toEnumi :: Inti@(I#Int#i#)|IntiInt -> Int -> Boolforall a. Ord a => a -> a -> Bool>=Int0Bool -> Bool -> Bool&&IntiInt -> Int -> Boolforall a. Ord a => a -> a -> Bool<=Word16 -> Intforall a b. (Integral a, Num b) => a -> bfromIntegral(Word16forall a. Bounded a => amaxBound::Word16)=Word# -> Word16W16#(Int# -> Word#int2Word#Int#i#)|Boolotherwise=String -> Int -> (Word16, Word16) -> Word16forall a b. Show a => String -> Int -> (a, a) -> btoEnumErrorString"Word16"Inti(Word16forall a. Bounded a => aminBound::Word16,Word16forall a. Bounded a => amaxBound::Word16)fromEnum :: Word16 -> IntfromEnum(W16#Word#x#)=Int# -> IntI#(Word# -> Int#word2Int#Word#x#)enumFrom :: Word16 -> [Word16]enumFrom=Word16 -> [Word16]forall a. (Enum a, Bounded a) => a -> [a]boundedEnumFromenumFromThen :: Word16 -> Word16 -> [Word16]enumFromThen=Word16 -> Word16 -> [Word16]forall a. (Enum a, Bounded a) => a -> a -> [a]boundedEnumFromThen-- | @since 2.01instanceIntegralWord16wherequot :: Word16 -> Word16 -> Word16quot(W16#Word#x#)y :: Word16y@(W16#Word#y#)|Word16yWord16 -> Word16 -> Boolforall a. Eq a => a -> a -> Bool/=Word160=Word# -> Word16W16#(Word#x#Word# -> Word# -> Word#`quotWord#`Word#y#)|Boolotherwise=Word16forall a. adivZeroErrorrem :: Word16 -> Word16 -> Word16rem(W16#Word#x#)y :: Word16y@(W16#Word#y#)|Word16yWord16 -> Word16 -> Boolforall a. Eq a => a -> a -> Bool/=Word160=Word# -> Word16W16#(Word#x#Word# -> Word# -> Word#`remWord#`Word#y#)|Boolotherwise=Word16forall a. adivZeroErrordiv :: Word16 -> Word16 -> Word16div(W16#Word#x#)y :: Word16y@(W16#Word#y#)|Word16yWord16 -> Word16 -> Boolforall a. Eq a => a -> a -> Bool/=Word160=Word# -> Word16W16#(Word#x#Word# -> Word# -> Word#`quotWord#`Word#y#)|Boolotherwise=Word16forall a. adivZeroErrormod :: Word16 -> Word16 -> Word16mod(W16#Word#x#)y :: Word16y@(W16#Word#y#)|Word16yWord16 -> Word16 -> Boolforall a. Eq a => a -> a -> Bool/=Word160=Word# -> Word16W16#(Word#x#Word# -> Word# -> Word#`remWord#`Word#y#)|Boolotherwise=Word16forall a. adivZeroErrorquotRem :: Word16 -> Word16 -> (Word16, Word16)quotRem(W16#Word#x#)y :: Word16y@(W16#Word#y#)|Word16yWord16 -> Word16 -> Boolforall a. Eq a => a -> a -> Bool/=Word160=caseWord#x#Word# -> Word# -> (# Word#, Word# #)`quotRemWord#`Word#y#of(#Word#q,Word#r#)->(Word# -> Word16W16#Word#q,Word# -> Word16W16#Word#r)|Boolotherwise=(Word16, Word16)forall a. adivZeroErrordivMod :: Word16 -> Word16 -> (Word16, Word16)divMod(W16#Word#x#)y :: Word16y@(W16#Word#y#)|Word16yWord16 -> Word16 -> Boolforall a. Eq a => a -> a -> Bool/=Word160=(Word# -> Word16W16#(Word#x#Word# -> Word# -> Word#`quotWord#`Word#y#),Word# -> Word16W16#(Word#x#Word# -> Word# -> Word#`remWord#`Word#y#))|Boolotherwise=(Word16, Word16)forall a. adivZeroErrortoInteger :: Word16 -> IntegertoInteger(W16#Word#x#)=Int# -> IntegersmallInteger(Word# -> Int#word2Int#Word#x#)-- | @since 2.01instanceBoundedWord16whereminBound :: Word16minBound=Word160maxBound :: Word16maxBound=Word160xFFFF-- | @since 2.01instanceIxWord16whererange :: (Word16, Word16) -> [Word16]range(Word16m,Word16n)=[Word16m..Word16n]unsafeIndex :: (Word16, Word16) -> Word16 -> IntunsafeIndex(Word16m,Word16_)Word16i=Word16 -> Intforall a b. (Integral a, Num b) => a -> bfromIntegral(Word16iWord16 -> Word16 -> Word16forall a. Num a => a -> a -> a-Word16m)inRange :: (Word16, Word16) -> Word16 -> BoolinRange(Word16m,Word16n)Word16i=Word16mWord16 -> Word16 -> Boolforall a. Ord a => a -> a -> Bool<=Word16iBool -> Bool -> Bool&&Word16iWord16 -> Word16 -> Boolforall a. Ord a => a -> a -> Bool<=Word16n-- | @since 2.01instanceBitsWord16where{-# INLINEshift#-}{-# INLINEbit#-}{-# INLINEtestBit#-}{-# INLINEpopCount#-}(W16#Word#x#).&. :: Word16 -> Word16 -> Word16.&.(W16#Word#y#)=Word# -> Word16W16#(Word#x#Word# -> Word# -> Word#`and#`Word#y#)(W16#Word#x#).|. :: Word16 -> Word16 -> Word16.|.(W16#Word#y#)=Word# -> Word16W16#(Word#x#Word# -> Word# -> Word#`or#`Word#y#)(W16#Word#x#)xor :: Word16 -> Word16 -> Word16`xor`(W16#Word#y#)=Word# -> Word16W16#(Word#x#Word# -> Word# -> Word#`xor#`Word#y#)complement :: Word16 -> Word16complement(W16#Word#x#)=Word# -> Word16W16#(Word#x#Word# -> Word# -> Word#`xor#`Word#mb#)where!(W16#Word#mb#)=Word16forall a. Bounded a => amaxBound(W16#Word#x#)shift :: Word16 -> Int -> Word16`shift`(I#Int#i#)|Int# -> BoolisTrue#(Int#i#Int# -> Int# -> Int#>=#Int#0#)=Word# -> Word16W16#(Word# -> Word#narrow16Word#(Word#x#Word# -> Int# -> Word#`shiftL#`Int#i#))|Boolotherwise=Word# -> Word16W16#(Word#x#Word# -> Int# -> Word#`shiftRL#`Int# -> Int#negateInt#Int#i#)(W16#Word#x#)shiftL :: Word16 -> Int -> Word16`shiftL`(I#Int#i#)|Int# -> BoolisTrue#(Int#i#Int# -> Int# -> Int#>=#Int#0#)=Word# -> Word16W16#(Word# -> Word#narrow16Word#(Word#x#Word# -> Int# -> Word#`shiftL#`Int#i#))|Boolotherwise=Word16forall a. aoverflowError(W16#Word#x#)unsafeShiftL :: Word16 -> Int -> Word16`unsafeShiftL`(I#Int#i#)=Word# -> Word16W16#(Word# -> Word#narrow16Word#(Word#x#Word# -> Int# -> Word#`uncheckedShiftL#`Int#i#))(W16#Word#x#)shiftR :: Word16 -> Int -> Word16`shiftR`(I#Int#i#)|Int# -> BoolisTrue#(Int#i#Int# -> Int# -> Int#>=#Int#0#)=Word# -> Word16W16#(Word#x#Word# -> Int# -> Word#`shiftRL#`Int#i#)|Boolotherwise=Word16forall a. aoverflowError(W16#Word#x#)unsafeShiftR :: Word16 -> Int -> Word16`unsafeShiftR`(I#Int#i#)=Word# -> Word16W16#(Word#x#Word# -> Int# -> Word#`uncheckedShiftRL#`Int#i#)(W16#Word#x#)rotate :: Word16 -> Int -> Word16`rotate`(I#Int#i#)|Int# -> BoolisTrue#(Int#i'#Int# -> Int# -> Int#==#Int#0#)=Word# -> Word16W16#Word#x#|Boolotherwise=Word# -> Word16W16#(Word# -> Word#narrow16Word#((Word#x#Word# -> Int# -> Word#`uncheckedShiftL#`Int#i'#)Word# -> Word# -> Word#`or#`(Word#x#Word# -> Int# -> Word#`uncheckedShiftRL#`(Int#16#Int# -> Int# -> Int#-#Int#i'#))))where!i'# :: Int#i'#=Word# -> Int#word2Int#(Int# -> Word#int2Word#Int#i#Word# -> Word# -> Word#`and#`Word#15##)bitSizeMaybe :: Word16 -> Maybe IntbitSizeMaybeWord16i=Int -> Maybe Intforall a. a -> Maybe aJust(Word16 -> Intforall b. FiniteBits b => b -> IntfiniteBitSizeWord16i)bitSize :: Word16 -> IntbitSizeWord16i=Word16 -> Intforall b. FiniteBits b => b -> IntfiniteBitSizeWord16iisSigned :: Word16 -> BoolisSignedWord16_=BoolFalsepopCount :: Word16 -> IntpopCount(W16#Word#x#)=Int# -> IntI#(Word# -> Int#word2Int#(Word# -> Word#popCnt16#Word#x#))bit :: Int -> Word16bit=Int -> Word16forall a. (Bits a, Num a) => Int -> abitDefaulttestBit :: Word16 -> Int -> BooltestBit=Word16 -> Int -> Boolforall a. (Bits a, Num a) => a -> Int -> BooltestBitDefault-- | @since 4.6.0.0instanceFiniteBitsWord16where{-# INLINEcountLeadingZeros#-}{-# INLINEcountTrailingZeros#-}finiteBitSize :: Word16 -> IntfiniteBitSizeWord16_=Int16countLeadingZeros :: Word16 -> IntcountLeadingZeros(W16#Word#x#)=Int# -> IntI#(Word# -> Int#word2Int#(Word# -> Word#clz16#Word#x#))countTrailingZeros :: Word16 -> IntcountTrailingZeros(W16#Word#x#)=Int# -> IntI#(Word# -> Int#word2Int#(Word# -> Word#ctz16#Word#x#))-- | Reverse order of bytes in 'Word16'.---- @since 4.7.0.0byteSwap16::Word16->Word16byteSwap16 :: Word16 -> Word16byteSwap16(W16#Word#w#)=Word# -> Word16W16#(Word# -> Word#narrow16Word#(Word# -> Word#byteSwap16#Word#w#)){-# RULES"fromIntegral/Word8->Word16"fromIntegral=\(W8#x#)->W16#x#"fromIntegral/Word16->Word16"fromIntegral=id::Word16->Word16"fromIntegral/Word16->Integer"fromIntegral=toInteger::Word16->Integer"fromIntegral/a->Word16"fromIntegral=\x->casefromIntegralxofW#x#->W16#(narrow16Word#x#)"fromIntegral/Word16->a"fromIntegral=\(W16#x#)->fromIntegral(W#x#)#-}{-# RULES"properFraction/Float->(Word16,Float)"properFraction=\x->caseproperFractionxof{(n,y)->((fromIntegral::Int->Word16)n,y::Float)}"truncate/Float->Word16"truncate=(fromIntegral::Int->Word16).(truncate::Float->Int)"floor/Float->Word16"floor=(fromIntegral::Int->Word16).(floor::Float->Int)"ceiling/Float->Word16"ceiling=(fromIntegral::Int->Word16).(ceiling::Float->Int)"round/Float->Word16"round=(fromIntegral::Int->Word16).(round::Float->Int)#-}{-# RULES"properFraction/Double->(Word16,Double)"properFraction=\x->caseproperFractionxof{(n,y)->((fromIntegral::Int->Word16)n,y::Double)}"truncate/Double->Word16"truncate=(fromIntegral::Int->Word16).(truncate::Double->Int)"floor/Double->Word16"floor=(fromIntegral::Int->Word16).(floor::Double->Int)"ceiling/Double->Word16"ceiling=(fromIntegral::Int->Word16).(ceiling::Double->Int)"round/Double->Word16"round=(fromIntegral::Int->Word16).(round::Double->Int)#-}-------------------------------------------------------------------------- type Word32-------------------------------------------------------------------------- Word32 is represented in the same way as Word.#if WORD_SIZE_IN_BITS > 32-- Operations may assume and must ensure that it holds only values-- from its logical range.-- We can use rewrite rules for the RealFrac methods{-# RULES"properFraction/Float->(Word32,Float)"properFraction=\x->caseproperFractionxof{(n,y)->((fromIntegral::Int->Word32)n,y::Float)}"truncate/Float->Word32"truncate=(fromIntegral::Int->Word32).(truncate::Float->Int)"floor/Float->Word32"floor=(fromIntegral::Int->Word32).(floor::Float->Int)"ceiling/Float->Word32"ceiling=(fromIntegral::Int->Word32).(ceiling::Float->Int)"round/Float->Word32"round=(fromIntegral::Int->Word32).(round::Float->Int)#-}{-# RULES"properFraction/Double->(Word32,Double)"properFraction=\x->caseproperFractionxof{(n,y)->((fromIntegral::Int->Word32)n,y::Double)}"truncate/Double->Word32"truncate=(fromIntegral::Int->Word32).(truncate::Double->Int)"floor/Double->Word32"floor=(fromIntegral::Int->Word32).(floor::Double->Int)"ceiling/Double->Word32"ceiling=(fromIntegral::Int->Word32).(ceiling::Double->Int)"round/Double->Word32"round=(fromIntegral::Int->Word32).(round::Double->Int)#-}#endifdata{-# CTYPE"HsWord32"#-}Word32=W32#Word#-- ^ 32-bit unsigned integer type-- See GHC.Classes#matching_overloaded_methods_in_rules-- | @since 2.01instanceEqWord32where== :: Word32 -> Word32 -> Bool(==)=Word32 -> Word32 -> BooleqWord32/= :: Word32 -> Word32 -> Bool(/=)=Word32 -> Word32 -> BoolneWord32eqWord32,neWord32::Word32->Word32->BooleqWord32 :: Word32 -> Word32 -> BooleqWord32(W32#Word#x)(W32#Word#y)=Int# -> BoolisTrue#(Word#xWord# -> Word# -> Int#`eqWord#`Word#y)neWord32 :: Word32 -> Word32 -> BoolneWord32(W32#Word#x)(W32#Word#y)=Int# -> BoolisTrue#(Word#xWord# -> Word# -> Int#`neWord#`Word#y){-# INLINE[1]eqWord32#-}{-# INLINE[1]neWord32#-}-- | @since 2.01instanceOrdWord32where< :: Word32 -> Word32 -> Bool(<)=Word32 -> Word32 -> BoolltWord32<= :: Word32 -> Word32 -> Bool(<=)=Word32 -> Word32 -> BoolleWord32>= :: Word32 -> Word32 -> Bool(>=)=Word32 -> Word32 -> BoolgeWord32> :: Word32 -> Word32 -> Bool(>)=Word32 -> Word32 -> BoolgtWord32{-# INLINE[1]gtWord32#-}{-# INLINE[1]geWord32#-}{-# INLINE[1]ltWord32#-}{-# INLINE[1]leWord32#-}gtWord32,geWord32,ltWord32,leWord32::Word32->Word32->Bool(W32#Word#x)gtWord32 :: Word32 -> Word32 -> Bool`gtWord32`(W32#Word#y)=Int# -> BoolisTrue#(Word#xWord# -> Word# -> Int#`gtWord#`Word#y)(W32#Word#x)geWord32 :: Word32 -> Word32 -> Bool`geWord32`(W32#Word#y)=Int# -> BoolisTrue#(Word#xWord# -> Word# -> Int#`geWord#`Word#y)(W32#Word#x)ltWord32 :: Word32 -> Word32 -> Bool`ltWord32`(W32#Word#y)=Int# -> BoolisTrue#(Word#xWord# -> Word# -> Int#`ltWord#`Word#y)(W32#Word#x)leWord32 :: Word32 -> Word32 -> Bool`leWord32`(W32#Word#y)=Int# -> BoolisTrue#(Word#xWord# -> Word# -> Int#`leWord#`Word#y)-- | @since 2.01instanceNumWord32where(W32#Word#x#)+ :: Word32 -> Word32 -> Word32+(W32#Word#y#)=Word# -> Word32W32#(Word# -> Word#narrow32Word#(Word#x#Word# -> Word# -> Word#`plusWord#`Word#y#))(W32#Word#x#)- :: Word32 -> Word32 -> Word32-(W32#Word#y#)=Word# -> Word32W32#(Word# -> Word#narrow32Word#(Word#x#Word# -> Word# -> Word#`minusWord#`Word#y#))(W32#Word#x#)* :: Word32 -> Word32 -> Word32*(W32#Word#y#)=Word# -> Word32W32#(Word# -> Word#narrow32Word#(Word#x#Word# -> Word# -> Word#`timesWord#`Word#y#))negate :: Word32 -> Word32negate(W32#Word#x#)=Word# -> Word32W32#(Word# -> Word#narrow32Word#(Int# -> Word#int2Word#(Int# -> Int#negateInt#(Word# -> Int#word2Int#Word#x#))))abs :: Word32 -> Word32absWord32x=Word32xsignum :: Word32 -> Word32signumWord320=Word320signumWord32_=Word321fromInteger :: Integer -> Word32fromIntegerIntegeri=Word# -> Word32W32#(Word# -> Word#narrow32Word#(Integer -> Word#integerToWordIntegeri))-- | @since 2.01instanceEnumWord32wheresucc :: Word32 -> Word32succWord32x|Word32xWord32 -> Word32 -> Boolforall a. Eq a => a -> a -> Bool/=Word32forall a. Bounded a => amaxBound=Word32xWord32 -> Word32 -> Word32forall a. Num a => a -> a -> a+Word321|Boolotherwise=String -> Word32forall a. String -> asuccErrorString"Word32"pred :: Word32 -> Word32predWord32x|Word32xWord32 -> Word32 -> Boolforall a. Eq a => a -> a -> Bool/=Word32forall a. Bounded a => aminBound=Word32xWord32 -> Word32 -> Word32forall a. Num a => a -> a -> a-Word321|Boolotherwise=String -> Word32forall a. String -> apredErrorString"Word32"toEnum :: Int -> Word32toEnumi :: Inti@(I#Int#i#)|IntiInt -> Int -> Boolforall a. Ord a => a -> a -> Bool>=Int0#if WORD_SIZE_IN_BITS > 32Bool -> Bool -> Bool&&IntiInt -> Int -> Boolforall a. Ord a => a -> a -> Bool<=Word32 -> Intforall a b. (Integral a, Num b) => a -> bfromIntegral(Word32forall a. Bounded a => amaxBound::Word32)#endif=Word# -> Word32W32#(Int# -> Word#int2Word#Int#i#)|Boolotherwise=String -> Int -> (Word32, Word32) -> Word32forall a b. Show a => String -> Int -> (a, a) -> btoEnumErrorString"Word32"Inti(Word32forall a. Bounded a => aminBound::Word32,Word32forall a. Bounded a => amaxBound::Word32)#if WORD_SIZE_IN_BITS == 32fromEnumx@(W32#x#)|x<=fromIntegral(maxBound::Int)=I#(word2Int#x#)|otherwise=fromEnumError"Word32"xenumFrom=integralEnumFromenumFromThen=integralEnumFromThenenumFromTo=integralEnumFromToenumFromThenTo=integralEnumFromThenTo#elsefromEnum :: Word32 -> IntfromEnum(W32#Word#x#)=Int# -> IntI#(Word# -> Int#word2Int#Word#x#)enumFrom :: Word32 -> [Word32]enumFrom=Word32 -> [Word32]forall a. (Enum a, Bounded a) => a -> [a]boundedEnumFromenumFromThen :: Word32 -> Word32 -> [Word32]enumFromThen=Word32 -> Word32 -> [Word32]forall a. (Enum a, Bounded a) => a -> a -> [a]boundedEnumFromThen#endif-- | @since 2.01instanceIntegralWord32wherequot :: Word32 -> Word32 -> Word32quot(W32#Word#x#)y :: Word32y@(W32#Word#y#)|Word32yWord32 -> Word32 -> Boolforall a. Eq a => a -> a -> Bool/=Word320=Word# -> Word32W32#(Word#x#Word# -> Word# -> Word#`quotWord#`Word#y#)|Boolotherwise=Word32forall a. adivZeroErrorrem :: Word32 -> Word32 -> Word32rem(W32#Word#x#)y :: Word32y@(W32#Word#y#)|Word32yWord32 -> Word32 -> Boolforall a. Eq a => a -> a -> Bool/=Word320=Word# -> Word32W32#(Word#x#Word# -> Word# -> Word#`remWord#`Word#y#)|Boolotherwise=Word32forall a. adivZeroErrordiv :: Word32 -> Word32 -> Word32div(W32#Word#x#)y :: Word32y@(W32#Word#y#)|Word32yWord32 -> Word32 -> Boolforall a. Eq a => a -> a -> Bool/=Word320=Word# -> Word32W32#(Word#x#Word# -> Word# -> Word#`quotWord#`Word#y#)|Boolotherwise=Word32forall a. adivZeroErrormod :: Word32 -> Word32 -> Word32mod(W32#Word#x#)y :: Word32y@(W32#Word#y#)|Word32yWord32 -> Word32 -> Boolforall a. Eq a => a -> a -> Bool/=Word320=Word# -> Word32W32#(Word#x#Word# -> Word# -> Word#`remWord#`Word#y#)|Boolotherwise=Word32forall a. adivZeroErrorquotRem :: Word32 -> Word32 -> (Word32, Word32)quotRem(W32#Word#x#)y :: Word32y@(W32#Word#y#)|Word32yWord32 -> Word32 -> Boolforall a. Eq a => a -> a -> Bool/=Word320=caseWord#x#Word# -> Word# -> (# Word#, Word# #)`quotRemWord#`Word#y#of(#Word#q,Word#r#)->(Word# -> Word32W32#Word#q,Word# -> Word32W32#Word#r)|Boolotherwise=(Word32, Word32)forall a. adivZeroErrordivMod :: Word32 -> Word32 -> (Word32, Word32)divMod(W32#Word#x#)y :: Word32y@(W32#Word#y#)|Word32yWord32 -> Word32 -> Boolforall a. Eq a => a -> a -> Bool/=Word320=(Word# -> Word32W32#(Word#x#Word# -> Word# -> Word#`quotWord#`Word#y#),Word# -> Word32W32#(Word#x#Word# -> Word# -> Word#`remWord#`Word#y#))|Boolotherwise=(Word32, Word32)forall a. adivZeroErrortoInteger :: Word32 -> IntegertoInteger(W32#Word#x#)#if WORD_SIZE_IN_BITS == 32|isTrue#(i#>=#0#)=smallIntegeri#|otherwise=wordToIntegerx#where!i#=word2Int#x##else=Int# -> IntegersmallInteger(Word# -> Int#word2Int#Word#x#)#endif-- | @since 2.01instanceBitsWord32where{-# INLINEshift#-}{-# INLINEbit#-}{-# INLINEtestBit#-}{-# INLINEpopCount#-}(W32#Word#x#).&. :: Word32 -> Word32 -> Word32.&.(W32#Word#y#)=Word# -> Word32W32#(Word#x#Word# -> Word# -> Word#`and#`Word#y#)(W32#Word#x#).|. :: Word32 -> Word32 -> Word32.|.(W32#Word#y#)=Word# -> Word32W32#(Word#x#Word# -> Word# -> Word#`or#`Word#y#)(W32#Word#x#)xor :: Word32 -> Word32 -> Word32`xor`(W32#Word#y#)=Word# -> Word32W32#(Word#x#Word# -> Word# -> Word#`xor#`Word#y#)complement :: Word32 -> Word32complement(W32#Word#x#)=Word# -> Word32W32#(Word#x#Word# -> Word# -> Word#`xor#`Word#mb#)where!(W32#Word#mb#)=Word32forall a. Bounded a => amaxBound(W32#Word#x#)shift :: Word32 -> Int -> Word32`shift`(I#Int#i#)|Int# -> BoolisTrue#(Int#i#Int# -> Int# -> Int#>=#Int#0#)=Word# -> Word32W32#(Word# -> Word#narrow32Word#(Word#x#Word# -> Int# -> Word#`shiftL#`Int#i#))|Boolotherwise=Word# -> Word32W32#(Word#x#Word# -> Int# -> Word#`shiftRL#`Int# -> Int#negateInt#Int#i#)(W32#Word#x#)shiftL :: Word32 -> Int -> Word32`shiftL`(I#Int#i#)|Int# -> BoolisTrue#(Int#i#Int# -> Int# -> Int#>=#Int#0#)=Word# -> Word32W32#(Word# -> Word#narrow32Word#(Word#x#Word# -> Int# -> Word#`shiftL#`Int#i#))|Boolotherwise=Word32forall a. aoverflowError(W32#Word#x#)unsafeShiftL :: Word32 -> Int -> Word32`unsafeShiftL`(I#Int#i#)=Word# -> Word32W32#(Word# -> Word#narrow32Word#(Word#x#Word# -> Int# -> Word#`uncheckedShiftL#`Int#i#))(W32#Word#x#)shiftR :: Word32 -> Int -> Word32`shiftR`(I#Int#i#)|Int# -> BoolisTrue#(Int#i#Int# -> Int# -> Int#>=#Int#0#)=Word# -> Word32W32#(Word#x#Word# -> Int# -> Word#`shiftRL#`Int#i#)|Boolotherwise=Word32forall a. aoverflowError(W32#Word#x#)unsafeShiftR :: Word32 -> Int -> Word32`unsafeShiftR`(I#Int#i#)=Word# -> Word32W32#(Word#x#Word# -> Int# -> Word#`uncheckedShiftRL#`Int#i#)(W32#Word#x#)rotate :: Word32 -> Int -> Word32`rotate`(I#Int#i#)|Int# -> BoolisTrue#(Int#i'#Int# -> Int# -> Int#==#Int#0#)=Word# -> Word32W32#Word#x#|Boolotherwise=Word# -> Word32W32#(Word# -> Word#narrow32Word#((Word#x#Word# -> Int# -> Word#`uncheckedShiftL#`Int#i'#)Word# -> Word# -> Word#`or#`(Word#x#Word# -> Int# -> Word#`uncheckedShiftRL#`(Int#32#Int# -> Int# -> Int#-#Int#i'#))))where!i'# :: Int#i'#=Word# -> Int#word2Int#(Int# -> Word#int2Word#Int#i#Word# -> Word# -> Word#`and#`Word#31##)bitSizeMaybe :: Word32 -> Maybe IntbitSizeMaybeWord32i=Int -> Maybe Intforall a. a -> Maybe aJust(Word32 -> Intforall b. FiniteBits b => b -> IntfiniteBitSizeWord32i)bitSize :: Word32 -> IntbitSizeWord32i=Word32 -> Intforall b. FiniteBits b => b -> IntfiniteBitSizeWord32iisSigned :: Word32 -> BoolisSignedWord32_=BoolFalsepopCount :: Word32 -> IntpopCount(W32#Word#x#)=Int# -> IntI#(Word# -> Int#word2Int#(Word# -> Word#popCnt32#Word#x#))bit :: Int -> Word32bit=Int -> Word32forall a. (Bits a, Num a) => Int -> abitDefaulttestBit :: Word32 -> Int -> BooltestBit=Word32 -> Int -> Boolforall a. (Bits a, Num a) => a -> Int -> BooltestBitDefault-- | @since 4.6.0.0instanceFiniteBitsWord32where{-# INLINEcountLeadingZeros#-}{-# INLINEcountTrailingZeros#-}finiteBitSize :: Word32 -> IntfiniteBitSizeWord32_=Int32countLeadingZeros :: Word32 -> IntcountLeadingZeros(W32#Word#x#)=Int# -> IntI#(Word# -> Int#word2Int#(Word# -> Word#clz32#Word#x#))countTrailingZeros :: Word32 -> IntcountTrailingZeros(W32#Word#x#)=Int# -> IntI#(Word# -> Int#word2Int#(Word# -> Word#ctz32#Word#x#)){-# RULES"fromIntegral/Word8->Word32"fromIntegral=\(W8#x#)->W32#x#"fromIntegral/Word16->Word32"fromIntegral=\(W16#x#)->W32#x#"fromIntegral/Word32->Word32"fromIntegral=id::Word32->Word32"fromIntegral/Word32->Integer"fromIntegral=toInteger::Word32->Integer"fromIntegral/a->Word32"fromIntegral=\x->casefromIntegralxofW#x#->W32#(narrow32Word#x#)"fromIntegral/Word32->a"fromIntegral=\(W32#x#)->fromIntegral(W#x#)#-}-- | @since 2.01instanceShowWord32where#if WORD_SIZE_IN_BITS < 33showsPrecpx=showsPrecp(toIntegerx)#elseshowsPrec :: Int -> Word32 -> ShowSshowsPrecIntpWord32x=Int -> Int -> ShowSforall a. Show a => Int -> a -> ShowSshowsPrecIntp(Word32 -> Intforall a b. (Integral a, Num b) => a -> bfromIntegralWord32x::Int)#endif-- | @since 2.01instanceRealWord32wheretoRational :: Word32 -> RationaltoRationalWord32x=Word32 -> Integerforall a. Integral a => a -> IntegertoIntegerWord32xInteger -> Integer -> Rationalforall a. Integral a => a -> a -> Ratio a%Integer1-- | @since 2.01instanceBoundedWord32whereminBound :: Word32minBound=Word320maxBound :: Word32maxBound=Word320xFFFFFFFF-- | @since 2.01instanceIxWord32whererange :: (Word32, Word32) -> [Word32]range(Word32m,Word32n)=[Word32m..Word32n]unsafeIndex :: (Word32, Word32) -> Word32 -> IntunsafeIndex(Word32m,Word32_)Word32i=Word32 -> Intforall a b. (Integral a, Num b) => a -> bfromIntegral(Word32iWord32 -> Word32 -> Word32forall a. Num a => a -> a -> a-Word32m)inRange :: (Word32, Word32) -> Word32 -> BoolinRange(Word32m,Word32n)Word32i=Word32mWord32 -> Word32 -> Boolforall a. Ord a => a -> a -> Bool<=Word32iBool -> Bool -> Bool&&Word32iWord32 -> Word32 -> Boolforall a. Ord a => a -> a -> Bool<=Word32n-- | Reverse order of bytes in 'Word32'.---- @since 4.7.0.0byteSwap32::Word32->Word32byteSwap32 :: Word32 -> Word32byteSwap32(W32#Word#w#)=Word# -> Word32W32#(Word# -> Word#narrow32Word#(Word# -> Word#byteSwap32#Word#w#))-------------------------------------------------------------------------- type Word64------------------------------------------------------------------------#if WORD_SIZE_IN_BITS < 64data{-# CTYPE"HsWord64"#-}Word64=W64#Word64#-- ^ 64-bit unsigned integer type-- See GHC.Classes#matching_overloaded_methods_in_rules-- | @since 2.01instanceEqWord64where(==)=eqWord64(/=)=neWord64eqWord64,neWord64::Word64->Word64->BooleqWord64(W64#x)(W64#y)=isTrue#(x`eqWord64#`y)neWord64(W64#x)(W64#y)=isTrue#(x`neWord64#`y){-# INLINE[1]eqWord64#-}{-# INLINE[1]neWord64#-}-- | @since 2.01instanceOrdWord64where(<)=ltWord64(<=)=leWord64(>=)=geWord64(>)=gtWord64{-# INLINE[1]gtWord64#-}{-# INLINE[1]geWord64#-}{-# INLINE[1]ltWord64#-}{-# INLINE[1]leWord64#-}gtWord64,geWord64,ltWord64,leWord64::Word64->Word64->Bool(W64#x)`gtWord64`(W64#y)=isTrue#(x`gtWord64#`y)(W64#x)`geWord64`(W64#y)=isTrue#(x`geWord64#`y)(W64#x)`ltWord64`(W64#y)=isTrue#(x`ltWord64#`y)(W64#x)`leWord64`(W64#y)=isTrue#(x`leWord64#`y)-- | @since 2.01instanceNumWord64where(W64#x#)+(W64#y#)=W64#(int64ToWord64#(word64ToInt64#x#`plusInt64#`word64ToInt64#y#))(W64#x#)-(W64#y#)=W64#(int64ToWord64#(word64ToInt64#x#`minusInt64#`word64ToInt64#y#))(W64#x#)*(W64#y#)=W64#(int64ToWord64#(word64ToInt64#x#`timesInt64#`word64ToInt64#y#))negate(W64#x#)=W64#(int64ToWord64#(negateInt64#(word64ToInt64#x#)))absx=xsignum0=0signum_=1fromIntegeri=W64#(integerToWord64i)-- | @since 2.01instanceEnumWord64wheresuccx|x/=maxBound=x+1|otherwise=succError"Word64"predx|x/=minBound=x-1|otherwise=predError"Word64"toEnumi@(I#i#)|i>=0=W64#(wordToWord64#(int2Word#i#))|otherwise=toEnumError"Word64"i(minBound::Word64,maxBound::Word64)fromEnumx@(W64#x#)|x<=fromIntegral(maxBound::Int)=I#(word2Int#(word64ToWord#x#))|otherwise=fromEnumError"Word64"xenumFrom=integralEnumFromenumFromThen=integralEnumFromThenenumFromTo=integralEnumFromToenumFromThenTo=integralEnumFromThenTo-- | @since 2.01instanceIntegralWord64wherequot(W64#x#)y@(W64#y#)|y/=0=W64#(x#`quotWord64#`y#)|otherwise=divZeroErrorrem(W64#x#)y@(W64#y#)|y/=0=W64#(x#`remWord64#`y#)|otherwise=divZeroErrordiv(W64#x#)y@(W64#y#)|y/=0=W64#(x#`quotWord64#`y#)|otherwise=divZeroErrormod(W64#x#)y@(W64#y#)|y/=0=W64#(x#`remWord64#`y#)|otherwise=divZeroErrorquotRem(W64#x#)y@(W64#y#)|y/=0=(W64#(x#`quotWord64#`y#),W64#(x#`remWord64#`y#))|otherwise=divZeroErrordivMod(W64#x#)y@(W64#y#)|y/=0=(W64#(x#`quotWord64#`y#),W64#(x#`remWord64#`y#))|otherwise=divZeroErrortoInteger(W64#x#)=word64ToIntegerx#-- | @since 2.01instanceBitsWord64where{-# INLINEshift#-}{-# INLINEbit#-}{-# INLINEtestBit#-}{-# INLINEpopCount#-}(W64#x#).&.(W64#y#)=W64#(x#`and64#`y#)(W64#x#).|.(W64#y#)=W64#(x#`or64#`y#)(W64#x#)`xor`(W64#y#)=W64#(x#`xor64#`y#)complement(W64#x#)=W64#(not64#x#)(W64#x#)`shift`(I#i#)|isTrue#(i#>=#0#)=W64#(x#`shiftL64#`i#)|otherwise=W64#(x#`shiftRL64#`negateInt#i#)(W64#x#)`shiftL`(I#i#)|isTrue#(i#>=#0#)=W64#(x#`shiftL64#`i#)|otherwise=overflowError(W64#x#)`unsafeShiftL`(I#i#)=W64#(x#`uncheckedShiftL64#`i#)(W64#x#)`shiftR`(I#i#)|isTrue#(i#>=#0#)=W64#(x#`shiftRL64#`i#)|otherwise=overflowError(W64#x#)`unsafeShiftR`(I#i#)=W64#(x#`uncheckedShiftRL64#`i#)(W64#x#)`rotate`(I#i#)|isTrue#(i'#==#0#)=W64#x#|otherwise=W64#((x#`uncheckedShiftL64#`i'#)`or64#`(x#`uncheckedShiftRL64#`(64#-#i'#)))where!i'#=word2Int#(int2Word#i#`and#`63##)bitSizeMaybei=Just(finiteBitSizei)bitSizei=finiteBitSizeiisSigned_=FalsepopCount(W64#x#)=I#(word2Int#(popCnt64#x#))bit=bitDefaulttestBit=testBitDefault-- give the 64-bit shift operations the same treatment as the 32-bit-- ones (see GHC.Base), namely we wrap them in tests to catch the-- cases when we're shifting more than 64 bits to avoid unspecified-- behaviour in the C shift operations.shiftL64#,shiftRL64#::Word64#->Int#->Word64#a`shiftL64#`b|isTrue#(b>=#64#)=wordToWord64#0##|otherwise=a`uncheckedShiftL64#`ba`shiftRL64#`b|isTrue#(b>=#64#)=wordToWord64#0##|otherwise=a`uncheckedShiftRL64#`b{-# RULES"fromIntegral/Int->Word64"fromIntegral=\(I#x#)->W64#(int64ToWord64#(intToInt64#x#))"fromIntegral/Word->Word64"fromIntegral=\(W#x#)->W64#(wordToWord64#x#)"fromIntegral/Word64->Int"fromIntegral=\(W64#x#)->I#(word2Int#(word64ToWord#x#))"fromIntegral/Word64->Word"fromIntegral=\(W64#x#)->W#(word64ToWord#x#)"fromIntegral/Word64->Word64"fromIntegral=id::Word64->Word64#-}#else-- Word64 is represented in the same way as Word.-- Operations may assume and must ensure that it holds only values-- from its logical range.data{-# CTYPE"HsWord64"#-}Word64=W64#Word#-- ^ 64-bit unsigned integer type-- See GHC.Classes#matching_overloaded_methods_in_rules-- | @since 2.01instanceEqWord64where== :: Word64 -> Word64 -> Bool(==)=Word64 -> Word64 -> BooleqWord64/= :: Word64 -> Word64 -> Bool(/=)=Word64 -> Word64 -> BoolneWord64eqWord64,neWord64::Word64->Word64->BooleqWord64 :: Word64 -> Word64 -> BooleqWord64(W64#Word#x)(W64#Word#y)=Int# -> BoolisTrue#(Word#xWord# -> Word# -> Int#`eqWord#`Word#y)neWord64 :: Word64 -> Word64 -> BoolneWord64(W64#Word#x)(W64#Word#y)=Int# -> BoolisTrue#(Word#xWord# -> Word# -> Int#`neWord#`Word#y){-# INLINE[1]eqWord64#-}{-# INLINE[1]neWord64#-}-- | @since 2.01instanceOrdWord64where< :: Word64 -> Word64 -> Bool(<)=Word64 -> Word64 -> BoolltWord64<= :: Word64 -> Word64 -> Bool(<=)=Word64 -> Word64 -> BoolleWord64>= :: Word64 -> Word64 -> Bool(>=)=Word64 -> Word64 -> BoolgeWord64> :: Word64 -> Word64 -> Bool(>)=Word64 -> Word64 -> BoolgtWord64{-# INLINE[1]gtWord64#-}{-# INLINE[1]geWord64#-}{-# INLINE[1]ltWord64#-}{-# INLINE[1]leWord64#-}gtWord64,geWord64,ltWord64,leWord64::Word64->Word64->Bool(W64#Word#x)gtWord64 :: Word64 -> Word64 -> Bool`gtWord64`(W64#Word#y)=Int# -> BoolisTrue#(Word#xWord# -> Word# -> Int#`gtWord#`Word#y)(W64#Word#x)geWord64 :: Word64 -> Word64 -> Bool`geWord64`(W64#Word#y)=Int# -> BoolisTrue#(Word#xWord# -> Word# -> Int#`geWord#`Word#y)(W64#Word#x)ltWord64 :: Word64 -> Word64 -> Bool`ltWord64`(W64#Word#y)=Int# -> BoolisTrue#(Word#xWord# -> Word# -> Int#`ltWord#`Word#y)(W64#Word#x)leWord64 :: Word64 -> Word64 -> Bool`leWord64`(W64#Word#y)=Int# -> BoolisTrue#(Word#xWord# -> Word# -> Int#`leWord#`Word#y)-- | @since 2.01instanceNumWord64where(W64#Word#x#)+ :: Word64 -> Word64 -> Word64+(W64#Word#y#)=Word# -> Word64W64#(Word#x#Word# -> Word# -> Word#`plusWord#`Word#y#)(W64#Word#x#)- :: Word64 -> Word64 -> Word64-(W64#Word#y#)=Word# -> Word64W64#(Word#x#Word# -> Word# -> Word#`minusWord#`Word#y#)(W64#Word#x#)* :: Word64 -> Word64 -> Word64*(W64#Word#y#)=Word# -> Word64W64#(Word#x#Word# -> Word# -> Word#`timesWord#`Word#y#)negate :: Word64 -> Word64negate(W64#Word#x#)=Word# -> Word64W64#(Int# -> Word#int2Word#(Int# -> Int#negateInt#(Word# -> Int#word2Int#Word#x#)))abs :: Word64 -> Word64absWord64x=Word64xsignum :: Word64 -> Word64signumWord640=Word640signumWord64_=Word641fromInteger :: Integer -> Word64fromIntegerIntegeri=Word# -> Word64W64#(Integer -> Word#integerToWordIntegeri)-- | @since 2.01instanceEnumWord64wheresucc :: Word64 -> Word64succWord64x|Word64xWord64 -> Word64 -> Boolforall a. Eq a => a -> a -> Bool/=Word64forall a. Bounded a => amaxBound=Word64xWord64 -> Word64 -> Word64forall a. Num a => a -> a -> a+Word641|Boolotherwise=String -> Word64forall a. String -> asuccErrorString"Word64"pred :: Word64 -> Word64predWord64x|Word64xWord64 -> Word64 -> Boolforall a. Eq a => a -> a -> Bool/=Word64forall a. Bounded a => aminBound=Word64xWord64 -> Word64 -> Word64forall a. Num a => a -> a -> a-Word641|Boolotherwise=String -> Word64forall a. String -> apredErrorString"Word64"toEnum :: Int -> Word64toEnumi :: Inti@(I#Int#i#)|IntiInt -> Int -> Boolforall a. Ord a => a -> a -> Bool>=Int0=Word# -> Word64W64#(Int# -> Word#int2Word#Int#i#)|Boolotherwise=String -> Int -> (Word64, Word64) -> Word64forall a b. Show a => String -> Int -> (a, a) -> btoEnumErrorString"Word64"Inti(Word64forall a. Bounded a => aminBound::Word64,Word64forall a. Bounded a => amaxBound::Word64)fromEnum :: Word64 -> IntfromEnumx :: Word64x@(W64#Word#x#)|Word64xWord64 -> Word64 -> Boolforall a. Ord a => a -> a -> Bool<=Int -> Word64forall a b. (Integral a, Num b) => a -> bfromIntegral(Intforall a. Bounded a => amaxBound::Int)=Int# -> IntI#(Word# -> Int#word2Int#Word#x#)|Boolotherwise=String -> Word64 -> Intforall a b. Show a => String -> a -> bfromEnumErrorString"Word64"Word64xenumFrom :: Word64 -> [Word64]enumFrom=Word64 -> [Word64]forall a. (Integral a, Bounded a) => a -> [a]integralEnumFromenumFromThen :: Word64 -> Word64 -> [Word64]enumFromThen=Word64 -> Word64 -> [Word64]forall a. (Integral a, Bounded a) => a -> a -> [a]integralEnumFromThenenumFromTo :: Word64 -> Word64 -> [Word64]enumFromTo=Word64 -> Word64 -> [Word64]forall a. Integral a => a -> a -> [a]integralEnumFromToenumFromThenTo :: Word64 -> Word64 -> Word64 -> [Word64]enumFromThenTo=Word64 -> Word64 -> Word64 -> [Word64]forall a. Integral a => a -> a -> a -> [a]integralEnumFromThenTo-- | @since 2.01instanceIntegralWord64wherequot :: Word64 -> Word64 -> Word64quot(W64#Word#x#)y :: Word64y@(W64#Word#y#)|Word64yWord64 -> Word64 -> Boolforall a. Eq a => a -> a -> Bool/=Word640=Word# -> Word64W64#(Word#x#Word# -> Word# -> Word#`quotWord#`Word#y#)|Boolotherwise=Word64forall a. adivZeroErrorrem :: Word64 -> Word64 -> Word64rem(W64#Word#x#)y :: Word64y@(W64#Word#y#)|Word64yWord64 -> Word64 -> Boolforall a. Eq a => a -> a -> Bool/=Word640=Word# -> Word64W64#(Word#x#Word# -> Word# -> Word#`remWord#`Word#y#)|Boolotherwise=Word64forall a. adivZeroErrordiv :: Word64 -> Word64 -> Word64div(W64#Word#x#)y :: Word64y@(W64#Word#y#)|Word64yWord64 -> Word64 -> Boolforall a. Eq a => a -> a -> Bool/=Word640=Word# -> Word64W64#(Word#x#Word# -> Word# -> Word#`quotWord#`Word#y#)|Boolotherwise=Word64forall a. adivZeroErrormod :: Word64 -> Word64 -> Word64mod(W64#Word#x#)y :: Word64y@(W64#Word#y#)|Word64yWord64 -> Word64 -> Boolforall a. Eq a => a -> a -> Bool/=Word640=Word# -> Word64W64#(Word#x#Word# -> Word# -> Word#`remWord#`Word#y#)|Boolotherwise=Word64forall a. adivZeroErrorquotRem :: Word64 -> Word64 -> (Word64, Word64)quotRem(W64#Word#x#)y :: Word64y@(W64#Word#y#)|Word64yWord64 -> Word64 -> Boolforall a. Eq a => a -> a -> Bool/=Word640=caseWord#x#Word# -> Word# -> (# Word#, Word# #)`quotRemWord#`Word#y#of(#Word#q,Word#r#)->(Word# -> Word64W64#Word#q,Word# -> Word64W64#Word#r)|Boolotherwise=(Word64, Word64)forall a. adivZeroErrordivMod :: Word64 -> Word64 -> (Word64, Word64)divMod(W64#Word#x#)y :: Word64y@(W64#Word#y#)|Word64yWord64 -> Word64 -> Boolforall a. Eq a => a -> a -> Bool/=Word640=(Word# -> Word64W64#(Word#x#Word# -> Word# -> Word#`quotWord#`Word#y#),Word# -> Word64W64#(Word#x#Word# -> Word# -> Word#`remWord#`Word#y#))|Boolotherwise=(Word64, Word64)forall a. adivZeroErrortoInteger :: Word64 -> IntegertoInteger(W64#Word#x#)|Int# -> BoolisTrue#(Int#i#Int# -> Int# -> Int#>=#Int#0#)=Int# -> IntegersmallIntegerInt#i#|Boolotherwise=Word# -> IntegerwordToIntegerWord#x#where!i# :: Int#i#=Word# -> Int#word2Int#Word#x#-- | @since 2.01instanceBitsWord64where{-# INLINEshift#-}{-# INLINEbit#-}{-# INLINEtestBit#-}{-# INLINEpopCount#-}(W64#Word#x#).&. :: Word64 -> Word64 -> Word64.&.(W64#Word#y#)=Word# -> Word64W64#(Word#x#Word# -> Word# -> Word#`and#`Word#y#)(W64#Word#x#).|. :: Word64 -> Word64 -> Word64.|.(W64#Word#y#)=Word# -> Word64W64#(Word#x#Word# -> Word# -> Word#`or#`Word#y#)(W64#Word#x#)xor :: Word64 -> Word64 -> Word64`xor`(W64#Word#y#)=Word# -> Word64W64#(Word#x#Word# -> Word# -> Word#`xor#`Word#y#)complement :: Word64 -> Word64complement(W64#Word#x#)=Word# -> Word64W64#(Word#x#Word# -> Word# -> Word#`xor#`Word#mb#)where!(W64#Word#mb#)=Word64forall a. Bounded a => amaxBound(W64#Word#x#)shift :: Word64 -> Int -> Word64`shift`(I#Int#i#)|Int# -> BoolisTrue#(Int#i#Int# -> Int# -> Int#>=#Int#0#)=Word# -> Word64W64#(Word#x#Word# -> Int# -> Word#`shiftL#`Int#i#)|Boolotherwise=Word# -> Word64W64#(Word#x#Word# -> Int# -> Word#`shiftRL#`Int# -> Int#negateInt#Int#i#)(W64#Word#x#)shiftL :: Word64 -> Int -> Word64`shiftL`(I#Int#i#)|Int# -> BoolisTrue#(Int#i#Int# -> Int# -> Int#>=#Int#0#)=Word# -> Word64W64#(Word#x#Word# -> Int# -> Word#`shiftL#`Int#i#)|Boolotherwise=Word64forall a. aoverflowError(W64#Word#x#)unsafeShiftL :: Word64 -> Int -> Word64`unsafeShiftL`(I#Int#i#)=Word# -> Word64W64#(Word#x#Word# -> Int# -> Word#`uncheckedShiftL#`Int#i#)(W64#Word#x#)shiftR :: Word64 -> Int -> Word64`shiftR`(I#Int#i#)|Int# -> BoolisTrue#(Int#i#Int# -> Int# -> Int#>=#Int#0#)=Word# -> Word64W64#(Word#x#Word# -> Int# -> Word#`shiftRL#`Int#i#)|Boolotherwise=Word64forall a. aoverflowError(W64#Word#x#)unsafeShiftR :: Word64 -> Int -> Word64`unsafeShiftR`(I#Int#i#)=Word# -> Word64W64#(Word#x#Word# -> Int# -> Word#`uncheckedShiftRL#`Int#i#)(W64#Word#x#)rotate :: Word64 -> Int -> Word64`rotate`(I#Int#i#)|Int# -> BoolisTrue#(Int#i'#Int# -> Int# -> Int#==#Int#0#)=Word# -> Word64W64#Word#x#|Boolotherwise=Word# -> Word64W64#((Word#x#Word# -> Int# -> Word#`uncheckedShiftL#`Int#i'#)Word# -> Word# -> Word#`or#`(Word#x#Word# -> Int# -> Word#`uncheckedShiftRL#`(Int#64#Int# -> Int# -> Int#-#Int#i'#)))where!i'# :: Int#i'#=Word# -> Int#word2Int#(Int# -> Word#int2Word#Int#i#Word# -> Word# -> Word#`and#`Word#63##)bitSizeMaybe :: Word64 -> Maybe IntbitSizeMaybeWord64i=Int -> Maybe Intforall a. a -> Maybe aJust(Word64 -> Intforall b. FiniteBits b => b -> IntfiniteBitSizeWord64i)bitSize :: Word64 -> IntbitSizeWord64i=Word64 -> Intforall b. FiniteBits b => b -> IntfiniteBitSizeWord64iisSigned :: Word64 -> BoolisSignedWord64_=BoolFalsepopCount :: Word64 -> IntpopCount(W64#Word#x#)=Int# -> IntI#(Word# -> Int#word2Int#(Word# -> Word#popCnt64#Word#x#))bit :: Int -> Word64bit=Int -> Word64forall a. (Bits a, Num a) => Int -> abitDefaulttestBit :: Word64 -> Int -> BooltestBit=Word64 -> Int -> Boolforall a. (Bits a, Num a) => a -> Int -> BooltestBitDefault{-# RULES"fromIntegral/a->Word64"fromIntegral=\x->casefromIntegralxofW#x#->W64#x#"fromIntegral/Word64->a"fromIntegral=\(W64#x#)->fromIntegral(W#x#)#-}uncheckedShiftL64#::Word#->Int#->Word#uncheckedShiftL64# :: Word# -> Int# -> Word#uncheckedShiftL64#=Word# -> Int# -> Word#uncheckedShiftL#uncheckedShiftRL64#::Word#->Int#->Word#uncheckedShiftRL64# :: Word# -> Int# -> Word#uncheckedShiftRL64#=Word# -> Int# -> Word#uncheckedShiftRL##endif-- | @since 4.6.0.0instanceFiniteBitsWord64where{-# INLINEcountLeadingZeros#-}{-# INLINEcountTrailingZeros#-}finiteBitSize :: Word64 -> IntfiniteBitSizeWord64_=Int64countLeadingZeros :: Word64 -> IntcountLeadingZeros(W64#Word#x#)=Int# -> IntI#(Word# -> Int#word2Int#(Word# -> Word#clz64#Word#x#))countTrailingZeros :: Word64 -> IntcountTrailingZeros(W64#Word#x#)=Int# -> IntI#(Word# -> Int#word2Int#(Word# -> Word#ctz64#Word#x#))-- | @since 2.01instanceShowWord64whereshowsPrec :: Int -> Word64 -> ShowSshowsPrecIntpWord64x=Int -> Integer -> ShowSforall a. Show a => Int -> a -> ShowSshowsPrecIntp(Word64 -> Integerforall a. Integral a => a -> IntegertoIntegerWord64x)-- | @since 2.01instanceRealWord64wheretoRational :: Word64 -> RationaltoRationalWord64x=Word64 -> Integerforall a. Integral a => a -> IntegertoIntegerWord64xInteger -> Integer -> Rationalforall a. Integral a => a -> a -> Ratio a%Integer1-- | @since 2.01instanceBoundedWord64whereminBound :: Word64minBound=Word640maxBound :: Word64maxBound=Word640xFFFFFFFFFFFFFFFF-- | @since 2.01instanceIxWord64whererange :: (Word64, Word64) -> [Word64]range(Word64m,Word64n)=[Word64m..Word64n]unsafeIndex :: (Word64, Word64) -> Word64 -> IntunsafeIndex(Word64m,Word64_)Word64i=Word64 -> Intforall a b. (Integral a, Num b) => a -> bfromIntegral(Word64iWord64 -> Word64 -> Word64forall a. Num a => a -> a -> a-Word64m)inRange :: (Word64, Word64) -> Word64 -> BoolinRange(Word64m,Word64n)Word64i=Word64mWord64 -> Word64 -> Boolforall a. Ord a => a -> a -> Bool<=Word64iBool -> Bool -> Bool&&Word64iWord64 -> Word64 -> Boolforall a. Ord a => a -> a -> Bool<=Word64n-- | Reverse order of bytes in 'Word64'.---- @since 4.7.0.0#if WORD_SIZE_IN_BITS < 64byteSwap64::Word64->Word64byteSwap64(W64#w#)=W64#(byteSwap64#w#)#elsebyteSwap64::Word64->Word64byteSwap64 :: Word64 -> Word64byteSwap64(W64#Word#w#)=Word# -> Word64W64#(Word# -> Word#byteSwap#Word#w#)#endif-- | Reverse the order of the bits in a 'Word8'.---- @since 4.12.0.0bitReverse8::Word8->Word8bitReverse8 :: Word8 -> Word8bitReverse8(W8#Word#w#)=Word# -> Word8W8#(Word# -> Word#narrow8Word#(Word# -> Word#bitReverse8#Word#w#))-- | Reverse the order of the bits in a 'Word16'.---- @since 4.12.0.0bitReverse16::Word16->Word16bitReverse16 :: Word16 -> Word16bitReverse16(W16#Word#w#)=Word# -> Word16W16#(Word# -> Word#narrow16Word#(Word# -> Word#bitReverse16#Word#w#))-- | Reverse the order of the bits in a 'Word32'.---- @since 4.12.0.0bitReverse32::Word32->Word32bitReverse32 :: Word32 -> Word32bitReverse32(W32#Word#w#)=Word# -> Word32W32#(Word# -> Word#narrow32Word#(Word# -> Word#bitReverse32#Word#w#))-- | Reverse the order of the bits in a 'Word64'.---- @since 4.12.0.0#if WORD_SIZE_IN_BITS < 64bitReverse64::Word64->Word64bitReverse64(W64#w#)=W64#(bitReverse64#w#)#elsebitReverse64::Word64->Word64bitReverse64 :: Word64 -> Word64bitReverse64(W64#Word#w#)=Word# -> Word64W64#(Word# -> Word#bitReverse#Word#w#)#endif-------------------------------------------------------------------------------{-# RULES"fromIntegral/Natural->Word8"fromIntegral=(fromIntegral::Word->Word8).naturalToWord"fromIntegral/Natural->Word16"fromIntegral=(fromIntegral::Word->Word16).naturalToWord"fromIntegral/Natural->Word32"fromIntegral=(fromIntegral::Word->Word32).naturalToWord#-}{-# RULES"fromIntegral/Word8->Natural"fromIntegral=wordToNatural.(fromIntegral::Word8->Word)"fromIntegral/Word16->Natural"fromIntegral=wordToNatural.(fromIntegral::Word16->Word)"fromIntegral/Word32->Natural"fromIntegral=wordToNatural.(fromIntegral::Word32->Word)#-}#if WORD_SIZE_IN_BITS == 64-- these RULES are valid for Word==Word64{-# RULES"fromIntegral/Natural->Word64"fromIntegral=(fromIntegral::Word->Word64).naturalToWord"fromIntegral/Word64->Natural"fromIntegral=wordToNatural.(fromIntegral::Word64->Word)#-}#endif
[8]ページ先頭