X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=Data%2FWord.hs;h=18300d2512c2d1a02557e706fc03cea775668159;hb=HEAD;hp=630855628b0fda02abc9dea8622919c46713d4d4;hpb=4aa4c78edf3cf4607ddeb669f536d646395ae9f0;p=ghc-base.git diff --git a/Data/Word.hs b/Data/Word.hs index 6308556..18300d2 100644 --- a/Data/Word.hs +++ b/Data/Word.hs @@ -1,4 +1,5 @@ -{-# OPTIONS -fno-implicit-prelude #-} +{-# LANGUAGE CPP, NoImplicitPrelude #-} + ----------------------------------------------------------------------------- -- | -- Module : Data.Word @@ -14,40 +15,50 @@ ----------------------------------------------------------------------------- module Data.Word - ( - -- * Unsigned integral types + ( + -- * Unsigned integral types + + Word, + Word8, Word16, Word32, Word64, - Word, - Word8, Word16, Word32, Word64, - - -- * Notes - - -- $notes - ) where + -- * Notes + + -- $notes + ) where #ifdef __GLASGOW_HASKELL__ import GHC.Word #endif +#ifdef __HUGS__ +import Hugs.Word +#endif + +#ifdef __NHC__ +import NHC.FFI (Word8, Word16, Word32, Word64) +import NHC.SizedTypes (Word8, Word16, Word32, Word64) -- instances of Bits +type Word = Word32 +#endif + {- $notes * All arithmetic is performed modulo 2^n, where n is the number of - bits in the type. One non-obvious consequence of this is that 'negate' + bits in the type. One non-obvious consequence of this is that 'Prelude.negate' should /not/ raise an error on negative arguments. * For coercing between any two integer types, use - 'fromIntegral', which is specialized for all the + 'Prelude.fromIntegral', which is specialized for all the common cases so should be fast enough. Coercing word types to and from integer types preserves representation, not sign. -* It would be very natural to add a type 'Natural' providing an unbounded - size unsigned integer, just as 'Integer' provides unbounded +* It would be very natural to add a type @Natural@ providing an unbounded + size unsigned integer, just as 'Prelude.Integer' provides unbounded size signed integers. We do not do that yet since there is no demand for it. -* The rules that hold for 'Enum' instances over a bounded type - such as 'Int' (see the section of the Haskell report dealing - with arithmetic sequences) also hold for the 'Enum' instances +* The rules that hold for 'Prelude.Enum' instances over a bounded type + such as 'Prelude.Int' (see the section of the Haskell report dealing + with arithmetic sequences) also hold for the 'Prelude.Enum' instances over the various 'Word' types defined here. * Right and left shifts by amounts greater than or equal to the width