!S*AN+      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                             ! " # $ % & ' ( ) *  Safeu+,-. Safe/NoneHUV0  comfort-array  has an 0N instance that is based on the storage order in memory. This way, you can put   values in a 1 or use them as keys in a Map even if Index sh has no 01 instance. The downside is, that the ordering of DeferredIndex sh may differ from the one of Index sh. comfort-arrayFThis data type wraps another array shape. Its index type is a wrapped 23. The advantages are: No conversion forth and back 2 and Index sh. You can convert once using 3 and 4J whenever you need your application specific index type. No need for e.g. Storable (Index sh) , because 2 is already 3 . You get ' and $# instances without the need for an ( type. The disadvantage is: A deferred index should be bound to a specific shape, but this is not checked. That is, you may obtain a deferred index for one shape and accidentally abuse it for another shape without a warning.Example: Shape> let sh2 = (ZeroBased (2::Int), ZeroBased (2::Int)) Shape> let sh3 = (ZeroBased (3::Int), ZeroBased (3::Int)) Shape> offset sh3 $ indexFromOffset sh2 3 4 Shape> offset (Deferred sh3) $ indexFromOffset (Deferred sh2) 3 3 comfort-array2 denotes a shape of fixed size that is defined by 4 and 53 methods. For correctness it is necessary that the 4 and 5N instances are properly implemented. Automatically derived instances are fine. comfort-array; denotes a range defined by the start index and the length. comfort-arrayB denotes an inclusive range like those of the Haskell 98 standard Array type from the array package. E.g. the shape type (Range Int32, Range Int64) is equivalent to the ix type (Int32, Int64) for Arrays. comfort-array: denotes a range starting at one and has a certain length. comfort-array; denotes a range starting at zero and has a certain length.% comfort-arrayIt should hold 'indexFromOffset sh k == indices sh !! k , but % should generally be faster.: comfort-array(Row-major composition of two dimensions.< comfort-arrayYou can use an arbitrary 1Y of indices as shape. The array elements are ordered according to the index order in the 1.9  !"#$%&'()*+-,./0123456789/01'()*+-,.$%&"# !2 34  5678556777NoneHV35NoneHV3 None48NoneHV6`9 comfort-arrayWe must restrict : to " because of ;@. Because the shape is static, we do not need a size check in '( *)'.<=>?@ABCA9 None69 Safe7DENoneHV8*NoneHV9@9 None:None;  None; NoneHUV<#           NoneHV@$ comfort-array-It is a checked error if the vector is empty.% comfort-array-It is a checked error if the vector is empty.' comfort-array !limits x = (minimum x, maximum x)&     !"#$%&'()*& !"#    $)%*'&(9 F !""#$$%&&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~4. / 0 * +        'comfort-array-0.4-OI6qaVZ6HTFbGJffvuxxGData.Array.Comfort.ShapeData.Array.Comfort.Shape.TestData.Array.Comfort.ContainerData.Array.Comfort.Boxed+Data.Array.Comfort.Storable.Mutable.Private#Data.Array.Comfort.Storable.Private#Data.Array.Comfort.Storable.Mutable-Data.Array.Comfort.Storable.Unchecked.Monadic%Data.Array.Comfort.Storable.UncheckedData.Array.Comfort.StorableData.Array.Comfort.Shape.Set Data.Array.Comfort.Shape.UtilityData.Array.Comfort.Check"Data.Array.Comfort.Boxed.Unchecked"Data.Array.Comfort.Storable.Memory-Data.Array.Comfort.Storable.Mutable.Unchecked:+:UpperTriangularLowerTriangular TriangulartriangularParttriangularSizeUpperLower DeferredIndexDeferred EnumerationShifted shiftedOffset shiftedSizeRange rangeFromrangeToOneBased oneBasedSize ZeroBased zeroBasedSizeZeroStaticstatic InvIndexedindexFromOffsetuncheckedIndexFromOffsetIndexedIndexindicesoffsetuncheckedOffsetinBounds sizeOffsetuncheckedSizeOffsetCsize uncheckedSizezeroBasedSplit deferIndex revealIndexlowerTriangularupperTriangular triangleSize triangleRoot$fC(,,)$fC(,) $fCTagged$fCSet$fC() $fIndexed(,,) $fIndexed(,)$fIndexedTagged $fIndexedSet $fIndexed()$fInvIndexed(,,)$fInvIndexed(,)$fInvIndexedTagged$fInvIndexedSet$fInvIndexed() $fStatic(,,) $fStatic(,)$fStaticTagged $fStatic() $fStaticZero$fCZero$fInvIndexedZeroBased $fCZeroBased$fStorableZeroBased$fNFDataZeroBased$fApplicativeZeroBased$fFunctorZeroBased$fInvIndexedOneBased $fCOneBased$fStorableOneBased$fNFDataOneBased$fApplicativeOneBased$fFunctorOneBased$fStorableRange$fInvIndexedRange$fIndexedRange$fCRange $fNFDataRange$fFunctorRange$fStorableShifted$fInvIndexedShifted$fIndexedShifted $fCShifted$fNFDataShifted$fFunctorShifted$fIndexedOneBased$fIndexedZeroBased$fStorableEnumeration$fStaticEnumeration$fInvIndexedEnumeration$fIndexedEnumeration$fCEnumeration$fNFDataEnumeration$fStaticDeferred $fCDeferred$fNFDataDeferred$fStorableDeferredIndex$fInvIndexedDeferred$fIndexedDeferred$fTriangularPartUpper$fTriangularPartLower$fStaticTriangular$fInvIndexedTriangular$fIndexedTriangular $fCTriangular$fEqTriangular$fNFDataTriangular $fStatic:+:$fInvIndexed:+: $fIndexed:+:$fC:+: $fNFData:+:$fEqZero $fOrdZero $fShowZero $fEqZeroBased$fShowZeroBased $fEqOneBased$fShowOneBased $fEqRange $fShowRange $fEqShifted $fShowShifted$fEqEnumeration$fShowEnumeration $fEqDeferred$fShowDeferred$fEqDeferredIndex$fOrdDeferredIndex$fShowDeferredIndex $fEqLower $fShowLower $fEqUpper $fShowUpper$fShowTriangular$fEq:+: $fShow:+:testsEqShapeeqShapeNFShapernfShapeShape shapeSizefromListtoShape$fCT$fCMap$fCT0$fCT1$fC[]$fCShape $fNFShapeT $fNFShapeMap $fNFShapeT0 $fNFShapeT1 $fNFShape[] $fNFDataShape $fEqShapeT $fEqShapeMap $fEqShapeT0 $fEqShapeT1 $fEqShape[] $fEqShape $fShowShape $fShowShape0 $fShowShape1 $fShowShape2ArraytoListvectorFromList replicatemapshapereshapemapShapefromMaptoMap fromContainer toContainer!zipWith// accumulatetoAssociationsfromAssociationsIOArraySTArraybuffercopycreatecreateWithSizecreateWithSizeAndResult unsafeCreateunsafeCreateWithSizeunsafeCreateWithSizeAndResultunsafeArrayIOToPrimshow withArrayPtrwithPtrreadwriteupdatenewfreezethaw unsafeFreeze unsafeThaw $fEqArray $fNFDataArray $fShowArray mapWithIndex singletonappendtakedroptakeLeft takeRightsplitsumproductfoldlsample fromBoxedtoBoxedminimummaximumfoldl1limitsfoldMap argMinimum argMaximumerrorIndexFromOffsetghc-prim GHC.ClassesOrdcontainers-0.6.0.1Data.Set.InternalSet GHC.TypesIntbaseForeign.StorableStorableGHC.EnumEnumBounded combineOffsetcombineSizeOffset$fApplicativeArrayGHC.Base Applicativepure toListLazy