-- Stability : experimental
-- Portability : portable
--
--- This module defines a "Fixed" type for fixed-precision arithmetic.
+-- This module defines a \"Fixed\" type for fixed-precision arithmetic.
-- The parameter to Fixed is any type that's an instance of HasResolution.
-- HasResolution has a single method that gives the resolution of the Fixed type.
-- Parameter types E6 and E12 (for 10^6 and 10^12) are defined, as well as
--
-- The 'Ix' class is used to map a contiguous subrange of values in
-- type onto integers. It is used primarily for array indexing
--- (see "Data.Array", "Data.Array.IArray" and "Data.Array.MArray").
+-- (see the array package).
--
-----------------------------------------------------------------------------
module Data.Ix
-- else Last Nothing)
-- @
--
--- Much of "Data.Map"'s interface can be implemented with
--- 'Data.Map.alter'. Some of the rest can be implemented with a new
+-- Much of Data.Map's interface can be implemented with
+-- Data.Map.alter. Some of the rest can be implemented with a new
-- @alterA@ function and either 'First' or 'Last':
--
-- > alterA :: (Applicative f, Ord k) =>
#endif
-- | Returns a unique integer associated with a 'TypeRep'. This can
--- be used for making a mapping ('Data.IntMap.IntMap') with TypeReps
+-- be used for making a mapping with TypeReps
-- as the keys, for example. It is guaranteed that @t1 == t2@ if and only if
-- @typeRepKey t1 == typeRepKey t2@.
--
\begin{code}
-- | The 'Ix' class is used to map a contiguous subrange of values in
-- a type onto integers. It is used primarily for array indexing
--- (see "Data.Array", "Data.Array.IArray" and "Data.Array.MArray").
+-- (see the array package).
--
-- The first argument @(l,u)@ of each of these operations is a pair
-- specifying the lower and upper bounds of a contiguous subrange of values.
-- blocks, no timeout event can be delivered until the FFI call returns, which
-- pretty much negates the purpose of the combinator. In practice, however,
-- this limitation is less severe than it may sound. Standard I\/O functions
--- like 'System.IO.hGetBuf', 'System.IO.hPutBuf', 'Network.Socket.accept', or
+-- like 'System.IO.hGetBuf', 'System.IO.hPutBuf', Network.Socket.accept, or
-- 'System.IO.hWaitForInput' appear to be blocking, but they really don't
-- because the runtime system uses scheduling mechanisms like @select(2)@ to
-- perform asynchronous I\/O, so it is possible to interrupt standard socket