Sophie

Sophie

distrib > Fedora > 14 > x86_64 > media > updates > by-pkgid > 77f0c8b2568c8ba86bf4498d38e7ecdc > files > 760

ghc-base-devel-4.2.0.2-8.6.fc14.x86_64.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--Rendered using the Haskell Html Library v0.2-->
<HTML
><HEAD
><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
><TITLE
>Data.Ix</TITLE
><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"
></SCRIPT
><SCRIPT TYPE="text/javascript"
>window.onload = function () {setSynopsis("mini_Data-Ix.html")};</SCRIPT
></HEAD
><BODY
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="topbar"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD
><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
></TD
><TD CLASS="title"
>base-4.2.0.2: Basic libraries</TD
><TD CLASS="topbut"
><A HREF="index.html"
>Contents</A
></TD
><TD CLASS="topbut"
><A HREF="doc-index.html"
>Index</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="modulebar"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD
><FONT SIZE="6"
>Data.Ix</FONT
></TD
><TD ALIGN="right"
><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="infohead"
>Portability</TD
><TD CLASS="infoval"
>portable</TD
></TR
><TR
><TD CLASS="infohead"
>Stability</TD
><TD CLASS="infoval"
>stable</TD
></TR
><TR
><TD CLASS="infohead"
>Maintainer</TD
><TD CLASS="infoval"
>libraries@haskell.org</TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="section4"
><B
>Contents</B
></TD
></TR
><TR
><TD
><DL
><DT
><A HREF="#1"
>The <TT
><A HREF="Data-Ix.html#t%3AIx"
>Ix</A
></TT
> class
</A
></DT
><DT
><A HREF="#2"
>Deriving Instances of <TT
><A HREF="Data-Ix.html#t%3AIx"
>Ix</A
></TT
>
</A
></DT
></DL
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
>Description</TD
></TR
><TR
><TD CLASS="doc"
>The <TT
><A HREF="Data-Ix.html#t%3AIx"
>Ix</A
></TT
> class is used to map a contiguous subrange of values in
 type onto integers.  It is used primarily for array indexing
 (see the array package).
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
>Synopsis</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>class</SPAN
> <A HREF="Data-Ord.html#t%3AOrd"
>Ord</A
> a =&gt; <A HREF="#t%3AIx"
>Ix</A
> a  <SPAN CLASS="keyword"
>where</SPAN
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="#v%3Arange"
>range</A
> :: (a, a) -&gt; [a]</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Aindex"
>index</A
> :: (a, a) -&gt; a -&gt; <A HREF="Data-Int.html#t%3AInt"
>Int</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AinRange"
>inRange</A
> :: (a, a) -&gt; a -&gt; <A HREF="Data-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3ArangeSize"
>rangeSize</A
> :: (a, a) -&gt; <A HREF="Data-Int.html#t%3AInt"
>Int</A
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="1"
><A NAME="1"
>The <TT
><A HREF="Data-Ix.html#t%3AIx"
>Ix</A
></TT
> class
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>class</SPAN
> <A HREF="Data-Ord.html#t%3AOrd"
>Ord</A
> a =&gt; <A NAME="t:Ix"
><A NAME="t%3AIx"
></A
></A
><B
>Ix</B
> a  <SPAN CLASS="keyword"
>where</SPAN
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
><P
>The <TT
><A HREF="Data-Ix.html#t%3AIx"
>Ix</A
></TT
> class is used to map a contiguous subrange of values in
 a type onto integers.  It is used primarily for array indexing
 (see the array package).
</P
><P
>The first argument <TT
>(l,u)</TT
> of each of these operations is a pair
 specifying the lower and upper bounds of a contiguous subrange of values.
</P
><P
>An implementation is entitled to assume the following laws about these
 operations:
</P
><UL
><LI
><PRE
><TT
><A HREF="Data-Ix.html#v%3AinRange"
>inRange</A
></TT
> (l,u) i == <TT
><A HREF="Data-List.html#v%3Aelem"
>elem</A
></TT
> i (<TT
><A HREF="Data-Ix.html#v%3Arange"
>range</A
></TT
> (l,u))</PRE
></LI
><LI
> <TT
><TT
><A HREF="Data-Ix.html#v%3Arange"
>range</A
></TT
> (l,u) <TT
><A HREF="Data-List.html#v%3A%21%21"
>!!</A
></TT
> <TT
><A HREF="Data-Ix.html#v%3Aindex"
>index</A
></TT
> (l,u) i == i</TT
>, when <TT
><TT
><A HREF="Data-Ix.html#v%3AinRange"
>inRange</A
></TT
> (l,u) i</TT
>
</LI
><LI
><PRE
><TT
><A HREF="Data-List.html#v%3Amap"
>map</A
></TT
> (<TT
><A HREF="Data-Ix.html#v%3Aindex"
>index</A
></TT
> (l,u)) (<TT
><A HREF="Data-Ix.html#v%3Arange"
>range</A
></TT
> (l,u))) == [0..<TT
><A HREF="Data-Ix.html#v%3ArangeSize"
>rangeSize</A
></TT
> (l,u)-1]</PRE
></LI
><LI
><PRE
><TT
><A HREF="Data-Ix.html#v%3ArangeSize"
>rangeSize</A
></TT
> (l,u) == <TT
><A HREF="Data-List.html#v%3Alength"
>length</A
></TT
> (<TT
><A HREF="Data-Ix.html#v%3Arange"
>range</A
></TT
> (l,u))</PRE
></LI
></UL
><P
>Minimal complete instance: <TT
><A HREF="Data-Ix.html#v%3Arange"
>range</A
></TT
>, <TT
><A HREF="Data-Ix.html#v%3Aindex"
>index</A
></TT
> and <TT
><A HREF="Data-Ix.html#v%3AinRange"
>inRange</A
></TT
>.
</P
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="section4"
>Methods</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A NAME="v:range"
><A NAME="v%3Arange"
></A
></A
><B
>range</B
> :: (a, a) -&gt; [a]</TD
></TR
><TR
><TD CLASS="doc"
>The list of values in the subrange defined by a bounding pair.
</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:index"
><A NAME="v%3Aindex"
></A
></A
><B
>index</B
> :: (a, a) -&gt; a -&gt; <A HREF="Data-Int.html#t%3AInt"
>Int</A
></TD
></TR
><TR
><TD CLASS="doc"
>The position of a subscript in the subrange.
</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:inRange"
><A NAME="v%3AinRange"
></A
></A
><B
>inRange</B
> :: (a, a) -&gt; a -&gt; <A HREF="Data-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="doc"
>Returns <TT
><A HREF="Data-Bool.html#v%3ATrue"
>True</A
></TT
> the given subscript lies in the range defined
 the bounding pair.
</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:rangeSize"
><A NAME="v%3ArangeSize"
></A
></A
><B
>rangeSize</B
> :: (a, a) -&gt; <A HREF="Data-Int.html#t%3AInt"
>Int</A
></TD
></TR
><TR
><TD CLASS="doc"
>The size of the subrange defined by a bounding pair.
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Ix')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:Ix" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> <A HREF="Data-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> <A HREF="Data-Char.html#t%3AChar"
>Char</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> <A HREF="Data-Int.html#t%3AInt"
>Int</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> <A HREF="Data-Int.html#t%3AInt8"
>Int8</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> <A HREF="Data-Int.html#t%3AInt16"
>Int16</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> <A HREF="Data-Int.html#t%3AInt32"
>Int32</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> <A HREF="Data-Int.html#t%3AInt64"
>Int64</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> <A HREF="Prelude.html#t%3AInteger"
>Integer</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> <A HREF="Data-Ord.html#t%3AOrdering"
>Ordering</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> <A HREF="Data-Word.html#t%3AWord"
>Word</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> <A HREF="Data-Word.html#t%3AWord8"
>Word8</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> <A HREF="Data-Word.html#t%3AWord16"
>Word16</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> <A HREF="Data-Word.html#t%3AWord32"
>Word32</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> <A HREF="Data-Word.html#t%3AWord64"
>Word64</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> ()</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> <A HREF="System-IO.html#t%3AIOMode"
>IOMode</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> <A HREF="GHC-IO-Device.html#t%3ASeekMode"
>SeekMode</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> <A HREF="Data-Char.html#t%3AGeneralCategory"
>GeneralCategory</A
></TD
></TR
><TR
><TD CLASS="decl"
>(<A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> a, <A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> b) =&gt; <A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> (a, b)</TD
></TR
><TR
><TD CLASS="decl"
>(<A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> a1, <A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> a2, <A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> a3) =&gt; <A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> (a1, a2, a3)</TD
></TR
><TR
><TD CLASS="decl"
>(<A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> a1, <A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> a2, <A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> a3, <A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> a4) =&gt; <A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> (a1, a2, a3, a4)</TD
></TR
><TR
><TD CLASS="decl"
>(<A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> a1, <A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> a2, <A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> a3, <A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> a4, <A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> a5) =&gt; <A HREF="Data-Ix.html#t%3AIx"
>Ix</A
> (a1, a2, a3, a4, a5)</TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="2"
><A NAME="2"
>Deriving Instances of <TT
><A HREF="Data-Ix.html#t%3AIx"
>Ix</A
></TT
>
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Derived instance declarations for the class <TT
><A HREF="Data-Ix.html#t%3AIx"
>Ix</A
></TT
> are only possible
 for enumerations (i.e. datatypes having only nullary constructors)
 and single-constructor datatypes, including arbitrarily large tuples,
 whose constituent types are instances of <TT
><A HREF="Data-Ix.html#t%3AIx"
>Ix</A
></TT
>. 
</P
><UL
><LI
> For an enumeration, the nullary constructors are assumed to be
 numbered left-to-right with the indices being 0 to n-1 inclusive. This
 is the same numbering defined by the Enum class. For example, given
 the datatype: 
</LI
></UL
><PRE
>        data Colour = Red | Orange | Yellow | Green | Blue | Indigo | Violet
</PRE
><P
>we would have: 
</P
><PRE
>        range   (Yellow,Blue)        ==  [Yellow,Green,Blue]
        index   (Yellow,Blue) Green  ==  1
        inRange (Yellow,Blue) Red    ==  False
</PRE
><UL
><LI
> For single-constructor datatypes, the derived instance declarations
 are as shown for tuples in Figure 1
 <A HREF="http://www.haskell.org/onlinelibrary/ix.html#prelude-index"
>http://www.haskell.org/onlinelibrary/ix.html#prelude-index</A
>.
</LI
></UL
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="botbar"
>Produced by <A HREF="http://www.haskell.org/haddock/"
>Haddock</A
> version 2.6.1</TD
></TR
></TABLE
></BODY
></HTML
>