<!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.Array.Parallel</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-Array-Parallel.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" >dph-seq-0.3: Data structures for Nested Data-Parallel Haskell.</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.Array.Parallel</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" >experimental</TD ></TR ><TR ><TD CLASS="infohead" >Maintainer</TD ><TD CLASS="infoval" >Roman Leshchinskiy <rl@cse.unsw.edu.au></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" ><P >User level interface of parallel arrays. </P ><P >Description --------------------------------------------------------------- </P ><P >Language: Haskell 98 plus parallel arrays </P ><P >The semantic difference between standard Haskell arrays (aka <A HREF="lazy arrays.html" >lazy arrays</A >) and parallel arrays (aka <A HREF="strict arrays.html" >strict arrays</A >) is that the evaluation of two different elements of a lazy array is independent, whereas in a strict array either non or all elements are evaluated. In other words, when a parallel array is evaluated to WHNF, all its elements will be evaluated to WHNF. The name parallel array indicates that all array elements may, in general, be evaluated to WHNF in parallel without any need to resort to speculative evaluation. This parallel evaluation semantics is also beneficial in the sequential case, as it facilitates loop-based array processing as known from classic array-based languages, such as Fortran. </P ><P >The interface of this module is essentially a variant of the list component of the Prelude, but also includes some functions (such as permutations) that are not provided for lists. The following list operations are not supported on parallel arrays, as they would require the availability of infinite parallel arrays: <TT ><A HREF="../base/Data-List.html#v%3Aiterate" >iterate</A ></TT >, <TT ><A HREF="../base/Data-List.html#v%3Arepeat" >repeat</A ></TT >, and <TT ><A HREF="../base/Data-List.html#v%3Acycle" >cycle</A ></TT >. </P ></TD ></TR ><TR ><TD CLASS="s15" ></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" ><A HREF="../base/GHC-PArr.html#v%3AemptyP" >emptyP</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../base/GHC-PArr.html#v%3AsingletonP" >singletonP</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../base/GHC-PArr.html#v%3AreplicateP" >replicateP</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../base/GHC-PArr.html#v%3AlengthP" >lengthP</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../base/GHC-PArr.html#v%3A%2B%3A%2B" >+:+</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../base/GHC-PArr.html#v%3AconcatP" >concatP</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../base/GHC-PArr.html#v%3AmapP" >mapP</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../base/GHC-PArr.html#v%3AfilterP" >filterP</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:combineP" ><A NAME="v%3AcombineP" ></A ></A ><B >combineP</B > :: [:a:] -> [:a:] -> [:<A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >:] -> [:a:]</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../base/GHC-PArr.html#v%3AzipP" >zipP</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../base/GHC-PArr.html#v%3AunzipP" >unzipP</A ></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 >