!1%      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ NoneHUV  comfort-arrayFThis data type wraps another array shape. Its index type is a wrapped 3. The advantages are: No conversion forth and back  and Index sh. You can convert once using - and .J whenever you need your application specific index type. No need for e.g. Storable (Index sh) , because  is already . comfort-array2 denotes a shape of fixed size that is defined by  and 3 methods. For correctness it is necessary that the  and D 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.4 comfort-array(Row-major composition of two dimensions.3  !"#$(%'&)*+,-./0123*+,"#$(%'&) !  -.  /0125577 NoneHV 9 Noneu 9 NoneHV >NoneHV NoneHV!9 None"None# None$NoneHV$ None%S 9     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     (comfort-array-0.3-JzD7i6t8sU9Cx7SbrxMYntData.Array.Comfort.ShapeData.Array.Comfort.BoxedData.Array.Comfort.Shape.Test+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.Storable"Data.Array.Comfort.Boxed.Unchecked-Data.Array.Comfort.Storable.Mutable.Unchecked:+:UpperTriangularLowerTriangular TriangulartriangularParttriangularSizeUpperLower DeferredIndexDeferred EnumerationShifted shiftedOffset shiftedSizeRange rangeFromrangeToOneBased oneBasedSize ZeroBased zeroBasedSize InvIndexedindexFromOffsetuncheckedIndexFromOffsetIndexedIndexindicesoffsetuncheckedOffsetinBounds sizeOffsetuncheckedSizeOffsetCsize uncheckedSize deferIndex revealIndexlowerTriangularupperTriangular triangleSize triangleRoot$fC(,,)$fC(,)$fC() $fIndexed(,,) $fIndexed(,) $fIndexed()$fInvIndexed(,,)$fInvIndexed(,)$fInvIndexed()$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$fInvIndexedEnumeration$fIndexedEnumeration$fCEnumeration$fNFDataEnumeration $fCDeferred$fNFDataDeferred$fStorableDeferredIndex$fInvIndexedDeferred$fIndexedDeferred$fTriangularPartUpper$fTriangularPartLower$fInvIndexedTriangular$fIndexedTriangular $fCTriangular$fNFDataTriangular$fInvIndexed:+: $fIndexed:+:$fC:+: $fNFData:+: $fEqZeroBased$fShowZeroBased $fEqOneBased$fShowOneBased $fEqRange $fShowRange $fEqShifted $fShowShifted$fEqEnumeration$fShowEnumeration $fEqDeferred$fShowDeferred$fEqDeferredIndex$fShowDeferredIndex $fEqLower $fShowLower $fEqUpper $fShowUpper$fEqTriangular$fShowTriangular$fEq:+: $fShow:+:ArraytoListfromListvectorFromListmapshape!zipWith// accumulatetoAssociationsfromAssociationstestsIOArraySTArraybuffercopycreatecreateWithSizecreateWithSizeAndResult unsafeCreateunsafeCreateWithSizeunsafeCreateWithSizeAndResultunsafeArrayIOToPrimshow withArrayPtrwithPtrreadwriteupdatenewreshapemapShapefreezethaw unsafeFreeze unsafeThaw $fNFDataArray $fShowArray mapWithIndexghc-prim GHC.TypesIntbaseForeign.StorableStorableGHC.EnumEnumBounded combineOffsetcombineSizeOffset toListLazy