<!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 >GHC.Arr</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_GHC-Arr.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.1.0.0: 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" >GHC.Arr</FONT ></TD ><TD ALIGN="right" ><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="infohead" >Portability</TD ><TD CLASS="infoval" >non-portable (GHC extensions)</TD ></TR ><TR ><TD CLASS="infohead" >Stability</TD ><TD CLASS="infoval" >internal</TD ></TR ><TR ><TD CLASS="infohead" >Maintainer</TD ><TD CLASS="infoval" >cvs-ghc@haskell.org</TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Description</TD ></TR ><TR ><TD CLASS="doc" >GHC's array implementation. </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 => <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) -> [a]</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aindex" >index</A > :: (a, a) -> a -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AunsafeIndex" >unsafeIndex</A > :: (a, a) -> a -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AinRange" >inRange</A > :: (a, a) -> a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ArangeSize" >rangeSize</A > :: (a, a) -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AunsafeRangeSize" >unsafeRangeSize</A > :: (a, a) -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AindexError" >indexError</A > :: <A HREF="Text-Show.html#t%3AShow" >Show</A > a => (a, a) -> a -> <A HREF="Data-Char.html#t%3AString" >String</A > -> b</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3AIPr" >IPr</A > = (<A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >, <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="#t%3AArray" >Array</A > i e = <A HREF="#v%3AArray" >Array</A > !i !i !<A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > (<A HREF="../ghc-prim/GHC-Prim.html#t%3AArray%23" >Array#</A > e)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3ASTArray" >STArray</A > s i e = <A HREF="#v%3ASTArray" >STArray</A > !i !i !<A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > (<A HREF="../ghc-prim/GHC-Prim.html#t%3AMutableArray%23" >MutableArray#</A > s e)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AarrEleBottom" >arrEleBottom</A > :: a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aarray" >array</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => (i, i) -> [(i, e)] -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AunsafeArray" >unsafeArray</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => (i, i) -> [(<A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >, e)] -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AunsafeArray%27" >unsafeArray'</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => (i, i) -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> [(<A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >, e)] -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Afill" >fill</A > :: <A HREF="../ghc-prim/GHC-Prim.html#t%3AMutableArray%23" >MutableArray#</A > s e -> (<A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >, e) -> STRep s a -> STRep s a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Adone" >done</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => i -> i -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> <A HREF="../ghc-prim/GHC-Prim.html#t%3AMutableArray%23" >MutableArray#</A > s e -> STRep s (<A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AlistArray" >listArray</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => (i, i) -> [e] -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3A%21" >(!)</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> i -> e</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsafeRangeSize" >safeRangeSize</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => (i, i) -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsafeIndex" >safeIndex</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => (i, i) -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> i -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AunsafeAt" >unsafeAt</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> e</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Abounds" >bounds</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> (i, i)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AnumElements" >numElements</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aindices" >indices</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> [i]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aelems" >elems</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> [e]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aassocs" >assocs</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> [(i, e)]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AaccumArray" >accumArray</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => (e -> a -> e) -> e -> (i, i) -> [(i, a)] -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AunsafeAccumArray" >unsafeAccumArray</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => (e -> a -> e) -> e -> (i, i) -> [(<A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >, a)] -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AunsafeAccumArray%27" >unsafeAccumArray'</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => (e -> a -> e) -> e -> (i, i) -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> [(<A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >, a)] -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aadjust" >adjust</A > :: (e -> a -> e) -> <A HREF="../ghc-prim/GHC-Prim.html#t%3AMutableArray%23" >MutableArray#</A > s e -> (<A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >, a) -> STRep s b -> STRep s b</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3A%2F%2F" >(//)</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> [(i, e)] -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AunsafeReplace" >unsafeReplace</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> [(<A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >, e)] -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aaccum" >accum</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => (e -> a -> e) -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> [(i, a)] -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AunsafeAccum" >unsafeAccum</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => (e -> a -> e) -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> [(<A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >, a)] -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aamap" >amap</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => (a -> b) -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i a -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i b</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aixmap" >ixmap</A > :: (<A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i, <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > j) => (i, i) -> (i -> j) -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > j e -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AeqArray" >eqArray</A > :: (<A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i, <A HREF="Data-Eq.html#t%3AEq" >Eq</A > e) => <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AcmpArray" >cmpArray</A > :: (<A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i, <A HREF="Data-Ord.html#t%3AOrd" >Ord</A > e) => <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> <A HREF="../ghc-prim/GHC-Ordering.html#t%3AOrdering" >Ordering</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AcmpIntArray" >cmpIntArray</A > :: <A HREF="Data-Ord.html#t%3AOrd" >Ord</A > e => <A HREF="GHC-Arr.html#t%3AArray" >Array</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > e -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > e -> <A HREF="../ghc-prim/GHC-Ordering.html#t%3AOrdering" >Ordering</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AnewSTArray" >newSTArray</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => (i, i) -> e -> <A HREF="Control-Monad-ST.html#t%3AST" >ST</A > s (<A HREF="GHC-Arr.html#t%3ASTArray" >STArray</A > s i e)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AboundsSTArray" >boundsSTArray</A > :: <A HREF="GHC-Arr.html#t%3ASTArray" >STArray</A > s i e -> (i, i)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AnumElementsSTArray" >numElementsSTArray</A > :: <A HREF="GHC-Arr.html#t%3ASTArray" >STArray</A > s i e -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AreadSTArray" >readSTArray</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3ASTArray" >STArray</A > s i e -> i -> <A HREF="Control-Monad-ST.html#t%3AST" >ST</A > s e</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AunsafeReadSTArray" >unsafeReadSTArray</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3ASTArray" >STArray</A > s i e -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> <A HREF="Control-Monad-ST.html#t%3AST" >ST</A > s e</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AwriteSTArray" >writeSTArray</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3ASTArray" >STArray</A > s i e -> i -> e -> <A HREF="Control-Monad-ST.html#t%3AST" >ST</A > s <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AunsafeWriteSTArray" >unsafeWriteSTArray</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3ASTArray" >STArray</A > s i e -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> e -> <A HREF="Control-Monad-ST.html#t%3AST" >ST</A > s <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AfreezeSTArray" >freezeSTArray</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3ASTArray" >STArray</A > s i e -> <A HREF="Control-Monad-ST.html#t%3AST" >ST</A > s (<A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AunsafeFreezeSTArray" >unsafeFreezeSTArray</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3ASTArray" >STArray</A > s i e -> <A HREF="Control-Monad-ST.html#t%3AST" >ST</A > s (<A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AthawSTArray" >thawSTArray</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> <A HREF="Control-Monad-ST.html#t%3AST" >ST</A > s (<A HREF="GHC-Arr.html#t%3ASTArray" >STArray</A > s i e)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AunsafeThawSTArray" >unsafeThawSTArray</A > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> <A HREF="Control-Monad-ST.html#t%3AST" >ST</A > s (<A HREF="GHC-Arr.html#t%3ASTArray" >STArray</A > s i e)</TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Documentation</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 => <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="GHC-Arr.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="GHC-Arr.html#v%3AinRange" >inRange</A ></TT > (l,u) i == <TT ><A HREF="Data-List.html#v%3Aelem" >elem</A ></TT > i (<TT ><A HREF="GHC-Arr.html#v%3Arange" >range</A ></TT > (l,u))</PRE ></LI ><LI > <TT ><TT ><A HREF="GHC-Arr.html#v%3Arange" >range</A ></TT > (l,u) <TT ><A HREF="Data-List.html#v%3A%21%21" >!!</A ></TT > <TT ><A HREF="GHC-Arr.html#v%3Aindex" >index</A ></TT > (l,u) i == i</TT >, when <TT ><TT ><A HREF="GHC-Arr.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="GHC-Arr.html#v%3Aindex" >index</A ></TT > (l,u)) (<TT ><A HREF="GHC-Arr.html#v%3Arange" >range</A ></TT > (l,u))) == [0..<TT ><A HREF="GHC-Arr.html#v%3ArangeSize" >rangeSize</A ></TT > (l,u)-1]</PRE ></LI ><LI ><PRE ><TT ><A HREF="GHC-Arr.html#v%3ArangeSize" >rangeSize</A ></TT > (l,u) == <TT ><A HREF="Data-List.html#v%3Alength" >length</A ></TT > (<TT ><A HREF="GHC-Arr.html#v%3Arange" >range</A ></TT > (l,u))</PRE ></LI ></UL ><P >Minimal complete instance: <TT ><A HREF="GHC-Arr.html#v%3Arange" >range</A ></TT >, <TT ><A HREF="GHC-Arr.html#v%3Aindex" >index</A ></TT > and <TT ><A HREF="GHC-Arr.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) -> [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) -> a -> <A HREF="../ghc-prim/GHC-Types.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:unsafeIndex" ><A NAME="v%3AunsafeIndex" ></A ></A ><B >unsafeIndex</B > :: (a, a) -> a -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="doc" >Like <TT ><A HREF="GHC-Arr.html#v%3Aindex" >index</A ></TT >, but without checking that the value is in range. </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) -> a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" >Returns <TT ><A HREF="../ghc-prim/GHC-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) -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="doc" >The size of the subrange defined by a bounding pair. </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:unsafeRangeSize" ><A NAME="v%3AunsafeRangeSize" ></A ></A ><B >unsafeRangeSize</B > :: (a, a) -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="doc" >like <TT ><A HREF="GHC-Arr.html#v%3ArangeSize" >rangeSize</A ></TT >, but without checking that the upper bound is in range. </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="GHC-Arr.html#t%3AIx" >Ix</A > <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="GHC-Arr.html#t%3AIx" >Ix</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="GHC-Arr.html#t%3AIx" >Ix</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="GHC-Arr.html#t%3AIx" >Ix</A > <A HREF="Data-Int.html#t%3AInt8" >Int8</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="GHC-Arr.html#t%3AIx" >Ix</A > <A HREF="Data-Int.html#t%3AInt16" >Int16</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="GHC-Arr.html#t%3AIx" >Ix</A > <A HREF="Data-Int.html#t%3AInt32" >Int32</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="GHC-Arr.html#t%3AIx" >Ix</A > <A HREF="Data-Int.html#t%3AInt64" >Int64</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="GHC-Arr.html#t%3AIx" >Ix</A > <A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="GHC-Arr.html#t%3AIx" >Ix</A > <A HREF="../ghc-prim/GHC-Ordering.html#t%3AOrdering" >Ordering</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="GHC-Arr.html#t%3AIx" >Ix</A > <A HREF="Data-Word.html#t%3AWord" >Word</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="GHC-Arr.html#t%3AIx" >Ix</A > <A HREF="Data-Word.html#t%3AWord8" >Word8</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="GHC-Arr.html#t%3AIx" >Ix</A > <A HREF="Data-Word.html#t%3AWord16" >Word16</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="GHC-Arr.html#t%3AIx" >Ix</A > <A HREF="Data-Word.html#t%3AWord32" >Word32</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="GHC-Arr.html#t%3AIx" >Ix</A > <A HREF="Data-Word.html#t%3AWord64" >Word64</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="GHC-Arr.html#t%3AIx" >Ix</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="GHC-Arr.html#t%3AIx" >Ix</A > <A HREF="System-IO.html#t%3AIOMode" >IOMode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="GHC-Arr.html#t%3AIx" >Ix</A > <A HREF="Data-Char.html#t%3AGeneralCategory" >GeneralCategory</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="GHC-Arr.html#t%3AIx" >Ix</A > <A HREF="System-IO.html#t%3ASeekMode" >SeekMode</A ></TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="GHC-Arr.html#t%3AIx" >Ix</A > a, <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > b) => <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%29" >(,)</A > a b)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="GHC-Arr.html#t%3AIx" >Ix</A > a1, <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > a2, <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > a3) => <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%29" >(,,)</A > a1 a2 a3)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="GHC-Arr.html#t%3AIx" >Ix</A > a1, <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > a2, <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > a3, <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > a4) => <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%29" >(,,,)</A > a1 a2 a3 a4)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="GHC-Arr.html#t%3AIx" >Ix</A > a1, <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > a2, <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > a3, <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > a4, <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > a5) => <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%29" >(,,,,)</A > a1 a2 a3 a4 a5)</TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:indexError" ><A NAME="v%3AindexError" ></A ></A ><B >indexError</B > :: <A HREF="Text-Show.html#t%3AShow" >Show</A > a => (a, a) -> a -> <A HREF="Data-Char.html#t%3AString" >String</A > -> b</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:IPr" ><A NAME="t%3AIPr" ></A ></A ><B >IPr</B > = (<A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >, <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A NAME="t:Array" ><A NAME="t%3AArray" ></A ></A ><B >Array</B > i e </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >The type of immutable non-strict (boxed) arrays with indices in <TT >i</TT > and elements in <TT >e</TT >. The Int is the number of elements in the Array. </TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:Array" ><A NAME="v%3AArray" ></A ></A ><B >Array</B > !i !i !<A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > (<A HREF="../ghc-prim/GHC-Prim.html#t%3AArray%23" >Array#</A > e)</TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Array')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Array" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable2" >Typeable2</A > <A HREF="GHC-Arr.html#t%3AArray" >Array</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="Control-Monad.html#t%3AFunctor" >Functor</A > (<A HREF="GHC-Arr.html#t%3AArray" >Array</A > i)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="Data-Foldable.html#t%3AFoldable" >Foldable</A > (<A HREF="GHC-Arr.html#t%3AArray" >Array</A > i)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="Data-Traversable.html#t%3ATraversable" >Traversable</A > (<A HREF="GHC-Arr.html#t%3AArray" >Array</A > i)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i, <A HREF="Data-Eq.html#t%3AEq" >Eq</A > e) => <A HREF="Data-Eq.html#t%3AEq" >Eq</A > (<A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > a, <A HREF="Data-Data.html#t%3AData" >Data</A > b, <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > a) => <A HREF="Data-Data.html#t%3AData" >Data</A > (<A HREF="GHC-Arr.html#t%3AArray" >Array</A > a b)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i, <A HREF="Data-Ord.html#t%3AOrd" >Ord</A > e) => <A HREF="Data-Ord.html#t%3AOrd" >Ord</A > (<A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="GHC-Arr.html#t%3AIx" >Ix</A > a, <A HREF="Text-Read.html#t%3ARead" >Read</A > a, <A HREF="Text-Read.html#t%3ARead" >Read</A > b) => <A HREF="Text-Read.html#t%3ARead" >Read</A > (<A HREF="GHC-Arr.html#t%3AArray" >Array</A > a b)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="GHC-Arr.html#t%3AIx" >Ix</A > a, <A HREF="Text-Show.html#t%3AShow" >Show</A > a, <A HREF="Text-Show.html#t%3AShow" >Show</A > b) => <A HREF="Text-Show.html#t%3AShow" >Show</A > (<A HREF="GHC-Arr.html#t%3AArray" >Array</A > a b)</TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:STArray" ><A NAME="t%3ASTArray" ></A ></A ><B >STArray</B > s i e </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" ><P >Mutable, boxed, non-strict arrays in the <TT ><A HREF="Control-Monad-ST.html#t%3AST" >ST</A ></TT > monad. The type arguments are as follows: </P ><UL ><LI > <TT >s</TT >: the state variable argument for the <TT ><A HREF="Control-Monad-ST.html#t%3AST" >ST</A ></TT > type </LI ><LI > <TT >i</TT >: the index type of the array (should be an instance of <TT ><A HREF="GHC-Arr.html#t%3AIx" >Ix</A ></TT >) </LI ><LI > <TT >e</TT >: the element type of the array. </LI ></UL ></TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:STArray" ><A NAME="v%3ASTArray" ></A ></A ><B >STArray</B > !i !i !<A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > (<A HREF="../ghc-prim/GHC-Prim.html#t%3AMutableArray%23" >MutableArray#</A > s e)</TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:STArray')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:STArray" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable3" >Typeable3</A > <A HREF="GHC-Arr.html#t%3ASTArray" >STArray</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Eq.html#t%3AEq" >Eq</A > (<A HREF="GHC-Arr.html#t%3ASTArray" >STArray</A > s i e)</TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:arrEleBottom" ><A NAME="v%3AarrEleBottom" ></A ></A ><B >arrEleBottom</B > :: a</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:array" ><A NAME="v%3Aarray" ></A ></A ><B >array</B ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="arg" >:: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" >=> (i, i)</TD ><TD CLASS="rdoc" >a pair of <EM >bounds</EM >, each of the index type of the array. These bounds are the lowest and highest indices in the array, in that order. For example, a one-origin vector of length '10' has bounds '(1,10)', and a one-origin '10' by '10' matrix has bounds '((1,1),(10,10))'. </TD ></TR ><TR ><TD CLASS="arg" >-> [(i, e)]</TD ><TD CLASS="rdoc" >a list of <EM >associations</EM > of the form (<EM >index</EM >, <EM >value</EM >). Typically, this list will be expressed as a comprehension. An association '(i, x)' defines the value of the array at index i to be x. </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="ndoc" COLSPAN="2" ><P >Construct an array with the specified bounds and containing values for given indices within these bounds. </P ><P >The array is undefined (i.e. bottom) if any index in the list is out of bounds. The Haskell 98 Report further specifies that if any two associations in the list have the same index, the value at that index is undefined (i.e. bottom). However in GHC's implementation, the value at such an index is the value part of the last association with that index in the list. </P ><P >Because the indices must be checked for these errors, <TT ><A HREF="GHC-Arr.html#v%3Aarray" >array</A ></TT > is strict in the bounds argument and in the indices of the association list, but nonstrict in the values. Thus, recurrences such as the following are possible: </P ><PRE > a = array (1,100) ((1,1) : [(i, i * a!(i-1)) | i <- [2..100]]) </PRE ><P >Not every index within the bounds of the array need appear in the association list, but the values associated with indices that do not appear will be undefined (i.e. bottom). </P ><P >If, in any dimension, the lower bound is greater than the upper bound, then the array is legal, but empty. Indexing an empty array always gives an array-bounds error, but <TT ><A HREF="GHC-Arr.html#v%3Abounds" >bounds</A ></TT > still yields the bounds with which the array was constructed. </P ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:unsafeArray" ><A NAME="v%3AunsafeArray" ></A ></A ><B >unsafeArray</B > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => (i, i) -> [(<A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >, e)] -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:unsafeArray'" ><A NAME="v%3AunsafeArray%27" ></A ></A ><B >unsafeArray'</B > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => (i, i) -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> [(<A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >, e)] -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:fill" ><A NAME="v%3Afill" ></A ></A ><B >fill</B > :: <A HREF="../ghc-prim/GHC-Prim.html#t%3AMutableArray%23" >MutableArray#</A > s e -> (<A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >, e) -> STRep s a -> STRep s a</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:done" ><A NAME="v%3Adone" ></A ></A ><B >done</B > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => i -> i -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> <A HREF="../ghc-prim/GHC-Prim.html#t%3AMutableArray%23" >MutableArray#</A > s e -> STRep s (<A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:listArray" ><A NAME="v%3AlistArray" ></A ></A ><B >listArray</B > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => (i, i) -> [e] -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e</TD ></TR ><TR ><TD CLASS="doc" >Construct an array from a pair of bounds and a list of values in index order. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:!" ><A NAME="v%3A%21" ></A ></A ><B >(!)</B > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> i -> e</TD ></TR ><TR ><TD CLASS="doc" >The value at the given index in an array. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:safeRangeSize" ><A NAME="v%3AsafeRangeSize" ></A ></A ><B >safeRangeSize</B > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => (i, i) -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:safeIndex" ><A NAME="v%3AsafeIndex" ></A ></A ><B >safeIndex</B > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => (i, i) -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> i -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:unsafeAt" ><A NAME="v%3AunsafeAt" ></A ></A ><B >unsafeAt</B > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> e</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:bounds" ><A NAME="v%3Abounds" ></A ></A ><B >bounds</B > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> (i, i)</TD ></TR ><TR ><TD CLASS="doc" >The bounds with which an array was constructed. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:numElements" ><A NAME="v%3AnumElements" ></A ></A ><B >numElements</B > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="doc" >The number of elements in the array. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:indices" ><A NAME="v%3Aindices" ></A ></A ><B >indices</B > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> [i]</TD ></TR ><TR ><TD CLASS="doc" >The list of indices of an array in ascending order. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:elems" ><A NAME="v%3Aelems" ></A ></A ><B >elems</B > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> [e]</TD ></TR ><TR ><TD CLASS="doc" >The list of elements of an array in index order. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:assocs" ><A NAME="v%3Aassocs" ></A ></A ><B >assocs</B > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> [(i, e)]</TD ></TR ><TR ><TD CLASS="doc" >The list of associations of an array in index order. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:accumArray" ><A NAME="v%3AaccumArray" ></A ></A ><B >accumArray</B ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="arg" >:: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" >=> e -> a -> e</TD ><TD CLASS="rdoc" >accumulating function </TD ></TR ><TR ><TD CLASS="arg" >-> e</TD ><TD CLASS="rdoc" >initial value </TD ></TR ><TR ><TD CLASS="arg" >-> (i, i)</TD ><TD CLASS="rdoc" >bounds of the array </TD ></TR ><TR ><TD CLASS="arg" >-> [(i, a)]</TD ><TD CLASS="rdoc" >association list </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="ndoc" COLSPAN="2" ><P >The <TT ><A HREF="GHC-Arr.html#v%3AaccumArray" >accumArray</A ></TT > deals with repeated indices in the association list using an <EM >accumulating function</EM > which combines the values of associations with the same index. For example, given a list of values of some index type, <TT >hist</TT > produces a histogram of the number of occurrences of each index within a specified range: </P ><PRE > hist :: (Ix a, Num b) => (a,a) -> [a] -> Array a b hist bnds is = accumArray (+) 0 bnds [(i, 1) | i<-is, inRange bnds i] </PRE ><P >If the accumulating function is strict, then <TT ><A HREF="GHC-Arr.html#v%3AaccumArray" >accumArray</A ></TT > is strict in the values, as well as the indices, in the association list. Thus, unlike ordinary arrays built with <TT ><A HREF="GHC-Arr.html#v%3Aarray" >array</A ></TT >, accumulated arrays should not in general be recursive. </P ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:unsafeAccumArray" ><A NAME="v%3AunsafeAccumArray" ></A ></A ><B >unsafeAccumArray</B > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => (e -> a -> e) -> e -> (i, i) -> [(<A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >, a)] -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:unsafeAccumArray'" ><A NAME="v%3AunsafeAccumArray%27" ></A ></A ><B >unsafeAccumArray'</B > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => (e -> a -> e) -> e -> (i, i) -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> [(<A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >, a)] -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:adjust" ><A NAME="v%3Aadjust" ></A ></A ><B >adjust</B > :: (e -> a -> e) -> <A HREF="../ghc-prim/GHC-Prim.html#t%3AMutableArray%23" >MutableArray#</A > s e -> (<A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >, a) -> STRep s b -> STRep s b</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v://" ><A NAME="v%3A%2F%2F" ></A ></A ><B >(//)</B > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> [(i, e)] -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e</TD ></TR ><TR ><TD CLASS="doc" ><P >Constructs an array identical to the first argument except that it has been updated by the associations in the right argument. For example, if <TT >m</TT > is a 1-origin, <TT >n</TT > by <TT >n</TT > matrix, then </P ><PRE > m//[((i,i), 0) | i <- [1..n]] </PRE ><P >is the same matrix, except with the diagonal zeroed. </P ><P >Repeated indices in the association list are handled as for <TT ><A HREF="GHC-Arr.html#v%3Aarray" >array</A ></TT >: Haskell 98 specifies that the resulting array is undefined (i.e. bottom), but GHC's implementation uses the last association for each index. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:unsafeReplace" ><A NAME="v%3AunsafeReplace" ></A ></A ><B >unsafeReplace</B > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> [(<A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >, e)] -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:accum" ><A NAME="v%3Aaccum" ></A ></A ><B >accum</B > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => (e -> a -> e) -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> [(i, a)] -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e</TD ></TR ><TR ><TD CLASS="doc" ><P ><TT ><TT ><A HREF="GHC-Arr.html#v%3Aaccum" >accum</A ></TT > f</TT > takes an array and an association list and accumulates pairs from the list into the array with the accumulating function <TT >f</TT >. Thus <TT ><A HREF="GHC-Arr.html#v%3AaccumArray" >accumArray</A ></TT > can be defined using <TT ><A HREF="GHC-Arr.html#v%3Aaccum" >accum</A ></TT >: </P ><PRE > accumArray f z b = accum f (array b [(i, z) | i <- range b]) </PRE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:unsafeAccum" ><A NAME="v%3AunsafeAccum" ></A ></A ><B >unsafeAccum</B > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => (e -> a -> e) -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> [(<A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >, a)] -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:amap" ><A NAME="v%3Aamap" ></A ></A ><B >amap</B > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => (a -> b) -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i a -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i b</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:ixmap" ><A NAME="v%3Aixmap" ></A ></A ><B >ixmap</B > :: (<A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i, <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > j) => (i, i) -> (i -> j) -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > j e -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e</TD ></TR ><TR ><TD CLASS="doc" ><P ><TT ><A HREF="GHC-Arr.html#v%3Aixmap" >ixmap</A ></TT > allows for transformations on array indices. It may be thought of as providing function composition on the right with the mapping that the original array embodies. </P ><P >A similar transformation of array values may be achieved using <TT ><A HREF="Control-Monad.html#v%3Afmap" >fmap</A ></TT > from the <TT ><A HREF="GHC-Arr.html#t%3AArray" >Array</A ></TT > instance of the <TT ><A HREF="Control-Monad.html#t%3AFunctor" >Functor</A ></TT > class. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:eqArray" ><A NAME="v%3AeqArray" ></A ></A ><B >eqArray</B > :: (<A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i, <A HREF="Data-Eq.html#t%3AEq" >Eq</A > e) => <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:cmpArray" ><A NAME="v%3AcmpArray" ></A ></A ><B >cmpArray</B > :: (<A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i, <A HREF="Data-Ord.html#t%3AOrd" >Ord</A > e) => <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> <A HREF="../ghc-prim/GHC-Ordering.html#t%3AOrdering" >Ordering</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:cmpIntArray" ><A NAME="v%3AcmpIntArray" ></A ></A ><B >cmpIntArray</B > :: <A HREF="Data-Ord.html#t%3AOrd" >Ord</A > e => <A HREF="GHC-Arr.html#t%3AArray" >Array</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > e -> <A HREF="GHC-Arr.html#t%3AArray" >Array</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > e -> <A HREF="../ghc-prim/GHC-Ordering.html#t%3AOrdering" >Ordering</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:newSTArray" ><A NAME="v%3AnewSTArray" ></A ></A ><B >newSTArray</B > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => (i, i) -> e -> <A HREF="Control-Monad-ST.html#t%3AST" >ST</A > s (<A HREF="GHC-Arr.html#t%3ASTArray" >STArray</A > s i e)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:boundsSTArray" ><A NAME="v%3AboundsSTArray" ></A ></A ><B >boundsSTArray</B > :: <A HREF="GHC-Arr.html#t%3ASTArray" >STArray</A > s i e -> (i, i)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:numElementsSTArray" ><A NAME="v%3AnumElementsSTArray" ></A ></A ><B >numElementsSTArray</B > :: <A HREF="GHC-Arr.html#t%3ASTArray" >STArray</A > s i e -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:readSTArray" ><A NAME="v%3AreadSTArray" ></A ></A ><B >readSTArray</B > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3ASTArray" >STArray</A > s i e -> i -> <A HREF="Control-Monad-ST.html#t%3AST" >ST</A > s e</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:unsafeReadSTArray" ><A NAME="v%3AunsafeReadSTArray" ></A ></A ><B >unsafeReadSTArray</B > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3ASTArray" >STArray</A > s i e -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> <A HREF="Control-Monad-ST.html#t%3AST" >ST</A > s e</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:writeSTArray" ><A NAME="v%3AwriteSTArray" ></A ></A ><B >writeSTArray</B > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3ASTArray" >STArray</A > s i e -> i -> e -> <A HREF="Control-Monad-ST.html#t%3AST" >ST</A > s <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:unsafeWriteSTArray" ><A NAME="v%3AunsafeWriteSTArray" ></A ></A ><B >unsafeWriteSTArray</B > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3ASTArray" >STArray</A > s i e -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> e -> <A HREF="Control-Monad-ST.html#t%3AST" >ST</A > s <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:freezeSTArray" ><A NAME="v%3AfreezeSTArray" ></A ></A ><B >freezeSTArray</B > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3ASTArray" >STArray</A > s i e -> <A HREF="Control-Monad-ST.html#t%3AST" >ST</A > s (<A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:unsafeFreezeSTArray" ><A NAME="v%3AunsafeFreezeSTArray" ></A ></A ><B >unsafeFreezeSTArray</B > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3ASTArray" >STArray</A > s i e -> <A HREF="Control-Monad-ST.html#t%3AST" >ST</A > s (<A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:thawSTArray" ><A NAME="v%3AthawSTArray" ></A ></A ><B >thawSTArray</B > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> <A HREF="Control-Monad-ST.html#t%3AST" >ST</A > s (<A HREF="GHC-Arr.html#t%3ASTArray" >STArray</A > s i e)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:unsafeThawSTArray" ><A NAME="v%3AunsafeThawSTArray" ></A ></A ><B >unsafeThawSTArray</B > :: <A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e -> <A HREF="Control-Monad-ST.html#t%3AST" >ST</A > s (<A HREF="GHC-Arr.html#t%3ASTArray" >STArray</A > s i e)</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.4.2</TD ></TR ></TABLE ></BODY ></HTML >