<!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.Unlifted.Distributed</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-Unlifted-Distributed.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-prim-par-0.3: Parallel Primitives for 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.Unlifted.Distributed</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 ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="section4" ><B >Contents</B ></TD ></TR ><TR ><TD ><DL ><DT ><A HREF="#1" >Gang operations </A ></DT ><DT ><A HREF="#2" >Gang hacks </A ></DT ><DT ><A HREF="#3" >Distributed types and classes </A ></DT ><DT ><A HREF="#4" >Higher-order combinators </A ></DT ><DT ><A HREF="#5" >Equality </A ></DT ><DT ><A HREF="#6" >Distributed scalars </A ></DT ><DT ><A HREF="#7" >Distributed pairs </A ></DT ><DT ><A HREF="#8" >Distributed arrays </A ></DT ><DT ><A HREF="#9" >Permutations </A ></DT ><DT ><A HREF="#10" >Distributed segmented arrays </A ></DT ><DT ><A HREF="#11" >Debugging </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" >Distributed types and operations. </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" >data</SPAN > <A HREF="#t%3AGang" >Gang</A > </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AforkGang" >forkGang</A > :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AgangSize" >gangSize</A > :: <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <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%3AsequentialGang" >sequentialGang</A > :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AseqGang" >seqGang</A > :: <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtheGang" >theGang</A > :: <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A HREF="#t%3ADT" >DT</A > a </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3ADist" >Dist</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmapD" >mapD</A > :: (<A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a, <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > b) => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> (a -> b) -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > b</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AzipWithD" >zipWithD</A > :: (<A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a, <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > b, <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > c) => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> (a -> b -> c) -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > b -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > c</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AfoldD" >foldD</A > :: <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> (a -> a -> a) -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AscanD" >scanD</A > :: <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> (a -> a -> a) -> a -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a <A HREF="../dph-base/Data-Array-Parallel-Base.html#t%3A%3A%2A%3A" >:*:</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AeqD" >eqD</A > :: (<A HREF="../base/Data-Eq.html#t%3AEq" >Eq</A > a, <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a) => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a -> <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%3AneqD" >neqD</A > :: (<A HREF="../base/Data-Eq.html#t%3AEq" >Eq</A > a, <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a) => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a -> <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%3AscalarD" >scalarD</A > :: <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> a -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AandD" >andD</A > :: <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A > -> <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%3AorD" >orD</A > :: <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A > -> <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%3AsumD" >sumD</A > :: (<A HREF="../base/Prelude.html#t%3ANum" >Num</A > a, <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a) => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AzipD" >zipD</A > :: (<A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a, <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > b) => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > b -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (a <A HREF="../dph-base/Data-Array-Parallel-Base.html#t%3A%3A%2A%3A" >:*:</A > b)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AunzipD" >unzipD</A > :: (<A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a, <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > b) => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (a <A HREF="../dph-base/Data-Array-Parallel-Base.html#t%3A%3A%2A%3A" >:*:</A > b) -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a <A HREF="../dph-base/Data-Array-Parallel-Base.html#t%3A%3A%2A%3A" >:*:</A > <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > b</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AfstD" >fstD</A > :: (<A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a, <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > b) => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (a <A HREF="../dph-base/Data-Array-Parallel-Base.html#t%3A%3A%2A%3A" >:*:</A > b) -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsndD" >sndD</A > :: (<A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a, <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > b) => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (a <A HREF="../dph-base/Data-Array-Parallel-Base.html#t%3A%3A%2A%3A" >:*:</A > b) -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > b</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AlengthD" >lengthD</A > :: <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a) -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > <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%3AsplitLenD" >splitLenD</A > :: <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > <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%3AsplitLengthD" >splitLengthD</A > :: <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > <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%3AsplitD" >splitD</A > :: <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADistribution" >Distribution</A > -> <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AjoinLengthD" >joinLengthD</A > :: <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a) -> <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%3AjoinD" >joinD</A > :: <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADistribution" >Distribution</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a) -> <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsplitJoinD" >splitJoinD</A > :: (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > a, <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > b) => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> (<A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a) -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > b)) -> <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a -> <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > b</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3ADistribution" >Distribution</A > </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Abalanced" >balanced</A > :: <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADistribution" >Distribution</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aunbalanced" >unbalanced</A > :: <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADistribution" >Distribution</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApermuteD" >permuteD</A > :: <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a) -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >) -> <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AbpermuteD" >bpermuteD</A > :: <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >) -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AatomicUpdateD" >atomicUpdateD</A > :: <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a) -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > (<A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > <A HREF="../dph-base/Data-Array-Parallel-Base.html#t%3A%3A%2A%3A" >:*:</A > a)) -> <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AbpermuteSD%27" >bpermuteSD'</A > :: <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3ASUArr" >SUArr</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >) -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3ASUArr" >SUArr</A > a)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsplitSD" >splitSD</A > :: <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADistribution" >Distribution</A > -> <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3ASUArr" >SUArr</A > a -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3ASUArr" >SUArr</A > a)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AjoinSD" >joinSD</A > :: <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADistribution" >Distribution</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3ASUArr" >SUArr</A > a) -> <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3ASUArr" >SUArr</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsplitJoinSD" >splitJoinSD</A > :: (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > a, <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > b) => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> (<A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3ASUArr" >SUArr</A > a) -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3ASUArr" >SUArr</A > b)) -> <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3ASUArr" >SUArr</A > a -> <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3ASUArr" >SUArr</A > b</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AfromD" >fromD</A > :: <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a -> [a]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtoD" >toD</A > :: <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> [a] -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a</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" >Gang operations </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:Gang" ><A NAME="t%3AGang" ></A ></A ><B >Gang</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >A <TT ><A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A ></TT > is a either group of threads which execute arbitrary work requests. A <EM >sequential</EM > <TT ><A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A ></TT > simulates such a group by executing work requests sequentially. </TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Gang')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Gang" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="../base/Text-Show.html#t%3AShow" >Show</A > <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:forkGang" ><A NAME="v%3AforkGang" ></A ></A ><B >forkGang</B > :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A ></TD ></TR ><TR ><TD CLASS="doc" >Fork a <TT ><A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A ></TT > with the given number of threads (at least 1). </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:gangSize" ><A NAME="v%3AgangSize" ></A ></A ><B >gangSize</B > :: <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="doc" >The number of threads in the <TT ><A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:sequentialGang" ><A NAME="v%3AsequentialGang" ></A ></A ><B >sequentialGang</B > :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A ></TD ></TR ><TR ><TD CLASS="doc" >Yield a sequential <TT ><A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A ></TT > which simulates the given number of threads. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:seqGang" ><A NAME="v%3AseqGang" ></A ></A ><B >seqGang</B > :: <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A ></TD ></TR ><TR ><TD CLASS="doc" >Yield a sequential <TT ><A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A ></TT > which simulates the given one. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="2" ><A NAME="2" >Gang hacks </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:theGang" ><A NAME="v%3AtheGang" ></A ></A ><B >theGang</B > :: <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="3" ><A NAME="3" >Distributed types and classes </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A NAME="t:DT" ><A NAME="t%3ADT" ></A ></A ><B >DT</B > a </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" ><P >Distributed types ---------------------------- </P ><P >Class of distributable types. Instances of <TT ><A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A ></TT > can be distributed across all workers of a <TT ><A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A ></TT >. All such types must be hyperstrict as we do not want to pass thunks into distributed computations. </P ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:DT')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:DT" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > <A HREF="../ghc-prim/GHC-Types.html#t%3ADouble" >Double</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AFloat" >Float</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > <A HREF="../base/Data-Word.html#t%3AWord8" >Word8</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUSegd" >USegd</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > (<A HREF="../dph-base/Data-Array-Parallel-Base.html#t%3AMaybeS" >MaybeS</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3ASUArr" >SUArr</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a, <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > b) => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > (a <A HREF="../dph-base/Data-Array-Parallel-Base.html#t%3A%3A%2A%3A" >:*:</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:Dist" ><A NAME="t%3ADist" ></A ></A ><B >Dist</B > a </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Dist')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Dist" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" >(<A HREF="../base/Text-Show.html#t%3AShow" >Show</A > a, <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a) => <A HREF="../base/Text-Show.html#t%3AShow" >Show</A > (<A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="../dph-base/Data-Array-Parallel-Base.html#t%3AHS" >HS</A > a, <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a) => <A HREF="../dph-base/Data-Array-Parallel-Base.html#t%3AHS" >HS</A > (<A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a)</TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="4" ><A NAME="4" >Higher-order combinators </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mapD" ><A NAME="v%3AmapD" ></A ></A ><B >mapD</B > :: (<A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a, <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > b) => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> (a -> b) -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > b</TD ></TR ><TR ><TD CLASS="doc" >Map a function over a distributed value. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:zipWithD" ><A NAME="v%3AzipWithD" ></A ></A ><B >zipWithD</B > :: (<A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a, <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > b, <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > c) => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> (a -> b -> c) -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > b -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > c</TD ></TR ><TR ><TD CLASS="doc" >Combine two distributed values with the given function. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:foldD" ><A NAME="v%3AfoldD" ></A ></A ><B >foldD</B > :: <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> (a -> a -> a) -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a -> a</TD ></TR ><TR ><TD CLASS="doc" >Fold a distributed value. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:scanD" ><A NAME="v%3AscanD" ></A ></A ><B >scanD</B > :: <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> (a -> a -> a) -> a -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a <A HREF="../dph-base/Data-Array-Parallel-Base.html#t%3A%3A%2A%3A" >:*:</A > a</TD ></TR ><TR ><TD CLASS="doc" >Prefix sum of a distributed value. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="5" ><A NAME="5" >Equality </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:eqD" ><A NAME="v%3AeqD" ></A ></A ><B >eqD</B > :: (<A HREF="../base/Data-Eq.html#t%3AEq" >Eq</A > a, <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a) => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" >Test whether to distributed values are equal. This requires a <TT ><A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A ></TT > and hence can't be defined in terms of <TT ><A HREF="../base/Data-Eq.html#t%3AEq" >Eq</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:neqD" ><A NAME="v%3AneqD" ></A ></A ><B >neqD</B > :: (<A HREF="../base/Data-Eq.html#t%3AEq" >Eq</A > a, <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a) => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" >Test whether to distributed values are not equal. This requires a <TT ><A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A ></TT > and hence can't be defined in terms of <TT ><A HREF="../base/Data-Eq.html#t%3AEq" >Eq</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="6" ><A NAME="6" >Distributed scalars </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:scalarD" ><A NAME="v%3AscalarD" ></A ></A ><B >scalarD</B > :: <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> a -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a</TD ></TR ><TR ><TD CLASS="doc" >Distribute a scalar. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:andD" ><A NAME="v%3AandD" ></A ></A ><B >andD</B > :: <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A > -> <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:orD" ><A NAME="v%3AorD" ></A ></A ><B >orD</B > :: <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A > -> <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:sumD" ><A NAME="v%3AsumD" ></A ></A ><B >sumD</B > :: (<A HREF="../base/Prelude.html#t%3ANum" >Num</A > a, <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a) => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a -> a</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="7" ><A NAME="7" >Distributed pairs </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:zipD" ><A NAME="v%3AzipD" ></A ></A ><B >zipD</B > :: (<A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a, <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > b) => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > b -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (a <A HREF="../dph-base/Data-Array-Parallel-Base.html#t%3A%3A%2A%3A" >:*:</A > b)</TD ></TR ><TR ><TD CLASS="doc" >Pairing of distributed values. <EM >The two values must belong to the same</EM > <TT ><A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:unzipD" ><A NAME="v%3AunzipD" ></A ></A ><B >unzipD</B > :: (<A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a, <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > b) => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (a <A HREF="../dph-base/Data-Array-Parallel-Base.html#t%3A%3A%2A%3A" >:*:</A > b) -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a <A HREF="../dph-base/Data-Array-Parallel-Base.html#t%3A%3A%2A%3A" >:*:</A > <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > b</TD ></TR ><TR ><TD CLASS="doc" >Unpairing of distributed values. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:fstD" ><A NAME="v%3AfstD" ></A ></A ><B >fstD</B > :: (<A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a, <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > b) => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (a <A HREF="../dph-base/Data-Array-Parallel-Base.html#t%3A%3A%2A%3A" >:*:</A > b) -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a</TD ></TR ><TR ><TD CLASS="doc" >Extract the first elements of a distributed pair. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:sndD" ><A NAME="v%3AsndD" ></A ></A ><B >sndD</B > :: (<A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a, <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > b) => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (a <A HREF="../dph-base/Data-Array-Parallel-Base.html#t%3A%3A%2A%3A" >:*:</A > b) -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > b</TD ></TR ><TR ><TD CLASS="doc" >Extract the second elements of a distributed pair. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="8" ><A NAME="8" >Distributed arrays </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:lengthD" ><A NAME="v%3AlengthD" ></A ></A ><B >lengthD</B > :: <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a) -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="doc" >Yield the distributed length of a distributed array. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:splitLenD" ><A NAME="v%3AsplitLenD" ></A ></A ><B >splitLenD</B > :: <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="doc" >Distribute the given array length over a <TT ><A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:splitLengthD" ><A NAME="v%3AsplitLengthD" ></A ></A ><B >splitLengthD</B > :: <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="doc" >Distribute the length of an array over a <TT ><A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:splitD" ><A NAME="v%3AsplitD" ></A ></A ><B >splitD</B > :: <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADistribution" >Distribution</A > -> <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a)</TD ></TR ><TR ><TD CLASS="doc" >Distribute an array over a <TT ><A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:joinLengthD" ><A NAME="v%3AjoinLengthD" ></A ></A ><B >joinLengthD</B > :: <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a) -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="doc" >Overall length of a distributed array. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:joinD" ><A NAME="v%3AjoinD" ></A ></A ><B >joinD</B > :: <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADistribution" >Distribution</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a) -> <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a</TD ></TR ><TR ><TD CLASS="doc" >Join a distributed array. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:splitJoinD" ><A NAME="v%3AsplitJoinD" ></A ></A ><B >splitJoinD</B > :: (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > a, <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > b) => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> (<A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a) -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > b)) -> <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a -> <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > b</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:Distribution" ><A NAME="t%3ADistribution" ></A ></A ><B >Distribution</B > </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:balanced" ><A NAME="v%3Abalanced" ></A ></A ><B >balanced</B > :: <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADistribution" >Distribution</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:unbalanced" ><A NAME="v%3Aunbalanced" ></A ></A ><B >unbalanced</B > :: <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADistribution" >Distribution</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="9" ><A NAME="9" >Permutations </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:permuteD" ><A NAME="v%3ApermuteD" ></A ></A ><B >permuteD</B > :: <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a) -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >) -> <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a</TD ></TR ><TR ><TD CLASS="doc" >Permute for distributed arrays. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:bpermuteD" ><A NAME="v%3AbpermuteD" ></A ></A ><B >bpermuteD</B > :: <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >) -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:atomicUpdateD" ><A NAME="v%3AatomicUpdateD" ></A ></A ><B >atomicUpdateD</B > :: <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a) -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > (<A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > <A HREF="../dph-base/Data-Array-Parallel-Base.html#t%3A%3A%2A%3A" >:*:</A > a)) -> <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:bpermuteSD'" ><A NAME="v%3AbpermuteSD%27" ></A ></A ><B >bpermuteSD'</B > :: <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUArr" >UArr</A > a -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3ASUArr" >SUArr</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >) -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3ASUArr" >SUArr</A > a)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="10" ><A NAME="10" >Distributed segmented arrays </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:splitSD" ><A NAME="v%3AsplitSD" ></A ></A ><B >splitSD</B > :: <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADistribution" >Distribution</A > -> <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3ASUArr" >SUArr</A > a -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3ASUArr" >SUArr</A > a)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:joinSD" ><A NAME="v%3AjoinSD" ></A ></A ><B >joinSD</B > :: <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADistribution" >Distribution</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3ASUArr" >SUArr</A > a) -> <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3ASUArr" >SUArr</A > a</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:splitJoinSD" ><A NAME="v%3AsplitJoinSD" ></A ></A ><B >splitJoinSD</B > :: (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > a, <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3AUA" >UA</A > b) => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> (<A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3ASUArr" >SUArr</A > a) -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > (<A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3ASUArr" >SUArr</A > b)) -> <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3ASUArr" >SUArr</A > a -> <A HREF="../dph-prim-seq/Data-Array-Parallel-Unlifted-Sequential.html#t%3ASUArr" >SUArr</A > b</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="11" ><A NAME="11" >Debugging </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:fromD" ><A NAME="v%3AfromD" ></A ></A ><B >fromD</B > :: <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a -> [a]</TD ></TR ><TR ><TD CLASS="doc" ><P >Yield all elements of a distributed value. </P ><P ><EM >NOTE:</EM > Debugging only. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:toD" ><A NAME="v%3AtoD" ></A ></A ><B >toD</B > :: <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADT" >DT</A > a => <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3AGang" >Gang</A > -> [a] -> <A HREF="Data-Array-Parallel-Unlifted-Distributed.html#t%3ADist" >Dist</A > a</TD ></TR ><TR ><TD CLASS="doc" ><P >Generate a distributed value from the first <TT >p</TT > elements of a list. </P ><P ><EM >NOTE:</EM > Debugging only. </P ></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 >