úÎ/ù*Ã-      !"#$%&'()*+,None'(+-./02346=JKM*Compute the size of an index Convert a - to a type-level  Peano numbers*Types that support static range operations All zeros All ones $The number of dimensions in an index The size of the index./Reify a type-level index into a value-level one//Reify a type-level index into a value-level one0Increment by one.1Decrement by one. Same as 2,, but there are no boundary checks, so when 3! is hit, it will wrap around to 4 / . Same as 5,, but there are no boundary checks, so when 4 /  is hit, it will wrap around to 3. Create an 6 index.Create an index from its 6 representation.%Ensure an index is within its bounds.71Ensure the "head" dimension is within its bounds.8Alter the "head" dimension.9See 37Get the minimum values of two indices at each dimension+Retain the rank, but change the upper boundCA single class encompassing all the instances an index should have.>The zero index, used to end indices, just as '[]' ends a list. Index constructor, analogous to :The : and ;u instances multiply in their bind operations, and their 'return'/'pure' creates an index whose first dimension is 1.The range of an index  range = foldrRange Proxy (:) []&Statically generated range of an index " srange = sfoldrRange Proxy (:) []Eager left fold over a range   r f z ==  f z (<  r)Lazy right fold over a range   r f z ==  f z (<  r)Compute something from a rangeStrict left fold over the raw indices under a rangeLazy right fold over the raw indices under a range Compute something using the raw indices under a range! Expands to a =U with the phantom type being the dimension specified Works in types and expressions. Examples: 5 id [dim|3 4 5|] ==> id (Proxy :: Proxy (3:.4:.5:.Z)) 6 Proxy :: [dim|3 4 5|] ==> Proxy :: Proxy (3:.4:.5:.Z)&See 5With optimisations, this compiles to an unrolled loop'See 5With optimisations, this compiles to an unrolled loop(See 5With optimisations, this compiles to an unrolled loop)See  5With optimisations, this compiles to an unrolled loop*See 5With optimisations, this compiles to an unrolled loop+See 5With optimisations, this compiles to an unrolled loop,3Create a bound for use with e.g. "Data.Array.array">RankY?@ABCD ./01 E789F !"#$%GHIJ&'()*+,KLMNOPQRSTUVWXYZ[\]^_`>ab2<c=de  !"#$%&'()*+,- ('&+*) ,"#$%!<?@ABCD ./01 E789F !"#$%GHIJ&'()*+,KLMNOPQRSTUVWXYZ[\]^_`>ab  f      !"#$%&'()*+,-./012345607807907:07;<=>?@A0BC0DE0FG0FHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm0FH0Fn0Fno indices-1.5.0 Data.Index Data.Listfoldl'foldrRangeSizeToPeanoPeanoSuccZeroRangedDimzerounitranksizenext'prev'toIndex fromIndexcorrectzipMinRanksetBoundIndexZ:.rangesrange foldlRange foldrRange withRangefoldlRangeIndicesfoldrRangeIndiceswithRangeIndicesdimdimHeaddimTailpdimHeadpdimTail swithRange sfoldrRange sfoldlRangeswithRangeIndicessfoldrRangeIndicessfoldlRangeIndicesboundsbase GHC.TypeLitsNatreflect'reflectnextprevGHC.EnumsuccmaxBoundminBoundpredghc-prim GHC.TypesInt correctOnceoverHeadlastDimControl.Applicative ApplicativeGHC.BaseMonad Data.Proxy asProxyTypeOfProxy $fRank:.:. swithRange_ sfoldrRange_ sfoldlRange_swithRangeIndices_sfoldrRangeIndices_sfoldlRangeIndices_ fromIndex'proxyOf nextTagged nextTaggedItagPeano tagPeanoIcnat $fRangeSucc $fRangeZero $fRangedn$fIx:.$fIxZ $fMonad:.$fApplicative:. $fMonoid:. $fMonoidZ $fBounded:. $fBoundedZ $fIntegral:. $fIntegralZ$fEnum:.$fEnumZ$fReal:.$fRealZ$fNum:.$fNumZ$fDim:.$fDimZ$fRankZZ$fIndexnKProxy