úÎW´RJ<      !"#$%&'()*+,-./0123456789:;  Safe-InferredNone@A number of additional operations that are useful together with  PrimitiveArrays. Dsubtract the right coordinates from the left. Does not check if the  resulting shape make sense. @Given an index and an extend, return a list of all indices. For  rangeList (Z:.3) (Z:.2) this returns [(Z:.3), (Z:.4), (Z:.5)]. <=<=NoneA subword wraps a simple pair. ISubwords always yield the upper-triangular part of a rect-angular array. > This gives the quite curious effect that (0,N) points to the `largest' N index, while (0,0) and (N,N) both point to the smallest. We do, however, use L (0,0) as the smallest as (0,k) gives successively smaller upper triangular  parts. triangular numbers A000217 &Size of an upper triangle starting at i and ending at j. (0,N) what  be the normal thing to use. ESubword indexing. Given the longest subword and the current subword,  calculate a linear index [0,..]. (l,n) in this case means l ower bound,  length n. And (i,j) is the normal index. TODO probably doesn'#t work right with non-zero base ?! >ESome weird things are going on here. Adding subwords (i,j) and (k,l) L yields (i+k,j+l). Normally i==k==0 when calculating space requirements. If N you have a subword (3,10) and want the next outer one add (-1,1) and you get I what you want. We make NO(!) check that the final subword contains only  non-negative indices.  ?@AB>C DE   ?@AB>CNone  ) inverts the usual subword (i,j) system. TODO do I need to store N ? &Size of an upper triangle starting at i and ending at j. (0,N) what M be the normal thing to use. Internally, we stell upper triangular matrices. EOutside indexing. Given the longest subword and the current subword,  calculate a linear index [0,..]. (l,n) in this case means l ower bound,  length n. And (i,j) is the normal index. TODO probably doesn'#t work right with non-zero base ?! FESome weird things are going on here. Adding subwords (i,j) and (k,l) L yields (i+k,j+l). Normally i==k==0 when calculating space requirements. If N you have a subword (3,10) and want the next outer one add (-1,1) and you get I what you want. We make NO(!) check that the final subword contains only  non-negative indices. GHIJFK LM   GHIJFKNoneNOPQRNOPQRNone"A point in right-linear grammars. $A point in left-linear grammars. In (i:.j), j is the non-terminal  storage point, i==0$ always for the non-terminal, while i>=0 for E terminals, which are on the right of the non-terminal. (This is why I left-linear grammars are called left-linear: they recurse on the left). PS: all this left/8right talk deals with the RHS of a production rule, the " LHS is always a non-terminal ;-) STUVWXY Z[\] STUVWXYNone<Map a function over each element, keeping the shape intact. /The core set of functions on immutable arrays. BReturns the bounds of an immutable array, again inclusive bounds:  [lb..ub] . IFreezes a mutable array an returns its immutable version. This operation  is O(1)? and both arrays share the same memory. Do not use the mutable  array afterwards. AExtract a single element from the array. Generally unsafe as not  bounds-checking is performed. !/The core set of operations for monadic arrays. "@Return the bounds of the array. All bounds are inclusive, as in  [lb..ub] #+Given lower and upper bounds and a list of all elements, produce a  mutable array. $GCreates a new array with the given bounds with each element within the $ array being in an undefined state. %5Creates a new array with all elements being equal to elm. &%Reads a single element in the array. '&Writes a single element in the array. (Mutable version of an array. )GInfix index operator. Performs minimal bounds-checking using assert in  non-optimized code. *2Returns true if the index is valid for the array. +IGiven two arrays with the same dimensionality, their respective starting L index, and how many steps to go in each dimension (in terms of a dimension I again), determine if the multidimensional slices have the same value at  all positions .TODO specialize for DIM1 (and maybe higher dim's) to use memcmp ,GConstruct a mutable primitive array from a lower and an upper bound, a . default element, and a list of associations. -'Return all associations from an array. .KCreates an immutable array from lower and upper bounds and a complete list  of elements. /KCreates an immutable array from lower and upper bounds, a default element,  and a list of associations. 0=Determines if an index is valid for a given immutable array. 16Returns all elements of an immutable array as a list.  !"#$%&'()*+,-./01 !"#$%&'()*+,-./01(!"#$%&' )*+,-./01  !"#$%&'()*+,-./01None4JDefines how a single index in a stack of arrays + evaluation functions is 4 handled. The instances *should* work for any index ix. 234567^_`a234567674532234567^_`aNone 89:;bcdefg89:;hi:;8989:;bcdefgj      !"#$%&'()*+,-./012345678899:;<=>?:@AB<=CD:EFG=HI:<J=KL:<MNOPQRSTUVWXYZ[\]^PrimitiveArray-0.5.2.0Data.Array.Repa.ExtShapeData.Array.Repa.Index.SubwordData.Array.Repa.Index.OutsideData.Array.Repa.Index.PointData.Array.Repa.Index.PointsData.PrimitiveArrayData.PrimitiveArray.FillTablesData.PrimitiveArray.ZeroData.PrimitiveArray.QuickCheckExtShapesubDim rangeListSubwordstagesubwordtriangularNumberupperTri subwordIndexsubwordFromIndexOutsideoutsidePointPointRPointLpointLpointR PrimArrayMapmap PrimArrayOpsboundsfreezeindex MPrimArrayOpsboundsM fromListMnewMnewWithMreadMwriteMMutArr! inBoundsMsliceEq fromAssocsMassocsfromList fromAssocsinBoundstoListGeneralNonTerminalSubwordNonTerminalStack writeStack UpperTriS upperTriSBoxedUnboxed $fExtShape:. $fExtShapeZ $fShape:. $fArbitrary:.$fArbitrarySubword$fNFDataSubword$fUnboxSubword V_Subword MV_Subword$fArbitraryOutside$fNFDataOutside$fUnboxOutside V_Outside MV_Outside$fArbitraryPoint $fNFDataPoint $fUnboxPointL$fArbitraryPointL$fNFDataPointL $fUnboxPointRV_PointL MV_PointLV_PointR MV_PointR $fStackmix:. $fStackmshZ$fStackmSubword:.$fUpperTriSm:.$fPrimArrayMapBoxedshee'$fPrimArrayOpsBoxedshelm$fMPrimArrayOpsBoxedshelm$fPrimArrayMapUnboxedshee'$fPrimArrayOpsUnboxedshelm$fMPrimArrayOpsUnboxedshelmMBoxedMUnboxed