A: u      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstNone&'+,-;<=BFQSTV]`@Reduces axis i in shape s. Does not maintain singlton dimension.8Reduces axis i in shape s. Maintains singlton dimension    uvwxyz{|}~Safe ;=BFT` 1Not everything that has a shape is representable.Atodo: Structure is a useful alternative concept/naming convention None&'+,-3;<=>?BCFKSTV`h6AllLT xs n = All (n >) xsSlice xs = Map Length xsYa sweet class of container with attributes necessary to supply the set of operations here&7an array with dimensions represented at the value level(+an array polymorphic in container and shapea[[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]], [[13, 14, 15, 16], [17, 18, 19, 20], [21, 22, 23, 24]]],;convert an array with type-level shape to value-level shape/.convert from n-dim shape index to a flat indexind [2,3,4] [1,1,1]170*convert from a flat index to a shape indexunind [2,3,4] 17[1,1,1]15convert the top layer of a SomeArray to a [SomeArray]2 outer product$todo: reconcile with numhask versionv NumHask.Array.>< v [[1, 2, 3], [2, 4, 6], [3, 6, 9]]3matrix multiplication,let a = [1, 2, 3, 4] :: Array [] '[2, 2] Int,let b = [5, 6, 7, 8] :: Array [] '[2, 2] Inta[[1, 2], [3, 4]]b[[5, 6], [7, 8]] mmult a b [[19, 22], [43, 50]]4extract the row of a matrix6extract the column of a matrix8unsafeIndex a [0,2,1]1098unsafeSlice [[0,1],[2],[1,2]] a :: Array [] '[2,1,2] Int [[[10, 11]], [[22, 23]]]:=todo: an ambiguous type variable has snucjk in here somewhere /slice (Proxy :: Proxy '[ '[0,1],'[2],'[1,2]]) a [[10, 11],[22, 23]];DfoldAlong (Proxy :: Proxy 1) (\_ -> ([0..3] :: Array [] '[4] Int)) a[[0, 1, 2, 3], [0, 1, 2, 3]]todo: resolution of a primitive and a scalar eg Expected type: Array '[10] Int -> Array '[] Int Actual type: Array '[10] (Array '[] Int) -> Array '[] Int<5todo: No instance for (Container (Array [] '[]) error CmapAlong (Proxy :: Proxy 0) (\x -> NumHask.Array.zipWith (*) x x) a  [[1, 4, 9, 16,25, 36, 49, 64,81, 100, 121, 144],[169, 196, 225, 256,289, 324, 361, 400,441, 484, 529, 576]]="concatenate (Proxy :: Proxy 2) a a[[[1, 2, 3, 4, 1, 2, 3, 4], [5, 6, 7, 8, 5, 6, 7, 8]," [9, 10, 11, 12, 9, 10, 11, 12]],# [[13, 14, 15, 16, 13, 14, 15, 16],# [17, 18, 19, 20, 17, 18, 19, 20],$ [21, 22, 23, 24, 21, 22, 23, 24]]]>NumHask.Array.transpose a [[[1, 2], [3, 4], [5, 6]], [[7, 8], [9, 10], [11, 12]], [[13, 14], [15, 16], [17, 18]], [[19, 20], [21, 22], [23, 24]]]?,let a = [1..24] :: Array [] '[2,1,3,4,1] Inta[[[[[1], [2], [3], [4]], [[5], [6], [7], [8]], [[9], [10], [11], [12]]]], [[[[13], [14], [15], [16]], [[17], [18], [19], [20]], [[21], [22], [23], [24]]]]] squeeze a[[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]], [[13, 14, 15, 16], [17, 18, 19, 20], [21, 22, 23, 24]]]Afrom flat listEqinstance of array where some of the dimensions are known at compile time it wraps an Array with some weird magicF3instance where dimensions are known at compile time(%$#" !&'()*+,-./0123456789:;<=>?[(F*+E)&', !"#$%poD-.CB/0nmAl1kqr23456789:;<=>?jihgfedcba`_^]\[ZYXWVU@TSRQPONMLKJIHG !"#$%&'E)F*+None -B`9SafeB`9      !"#$%&'()*+,-../0/123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~,numhask-array-0.1.1.0-9XBoEmsc0DfG1YmN2ZTsiqNumHask.Array.Constraints NumHask.Shape NumHask.ArrayNumHask.Array.ExamplePaths_numhask_array dimShuffle&adjunctions-4.4-8lKEhJA7eef5OW6cimg4qwData.Functor.RepindextabulateRep Representable HeadModule TailModuleFold FoldAlong Concatenate TransposeIsValidTransposeSqueeze IsValidConcat DimShuffleS$fSuppressUnusedWarnings(->)Let6989586621679094967Scrutinee_6989586621679091497Sym3S$fSuppressUnusedWarnings(->)Let6989586621679094967Scrutinee_6989586621679091497Sym2S$fSuppressUnusedWarnings(->)Let6989586621679094967Scrutinee_6989586621679091497Sym1S$fSuppressUnusedWarnings(->)Let6989586621679094967Scrutinee_6989586621679091497Sym0*$fSuppressUnusedWarnings(->)DimShuffleSym0*$fSuppressUnusedWarnings(->)DimShuffleSym1HasShapeShapeshape AllLTSym1 AllLTSym0SliceMatrixVector ContainergenerateidxcslicezipWith chunkItUpcfoldl'cfoldrcconcatAnyArrayArray SomeArray _getContaineranyArrayxdimListdimListindunindflatten1><mmultrow unsafeRowcol unsafeCol unsafeIndex unsafeSliceslice foldAlongmapAlong concatenate transposesqueeze$fNormedArraya $fIsListArray$fHasShapeArray$fHasShapeArray0 $fEqArrayD:R:ArrayXNatcxdst0D:R:ArrayNatcdst0$fTensorProductArray$fSingletonArray!$fMultiplicativeGroupModuleArraya$fMultiplicativeModuleArraya$fAdditiveGroupModuleArraya$fAdditiveModuleArraya $fMultiplicativeGroupBasisArraya$fMultiplicativeBasisArraya$fAdditiveGroupBasisArraya$fAdditiveBasisArraya$fHilbertArraya$fIntegralArray$fMetricArraya$fEpsilonArray $fSignedArray$fBoundedFieldArray$fExpFieldArray $fFieldArray $fCRingArray $fRingArray$fSemiringArray$fDistributionArray$fMultiplicativeGroupArray$fMultiplicativeArray$fMultiplicativeInvertibleArray $fMultiplicativeCommutativeArray $fMultiplicativeAssociativeArray$fMultiplicativeUnitalArray$fMultiplicativeMagmaArray$fAdditiveGroupArray$fAdditiveArray$fAdditiveInvertibleArray$fAdditiveCommutativeArray$fAdditiveAssociativeArray$fAdditiveUnitalArray$fAdditiveMagmaArray $fShowArray$fShowAnyArray$fRepresentableArray$fDistributiveArray $fContainer[]$fContainerVector$fArbitraryArray$fArbitraryArray0$fFunctorArray$fFoldableArrayDimShuffleSym0DimShuffleSym0KindInferenceDimShuffleSym1DimShuffleSym1KindInference7Let6989586621679094967Scrutinee_6989586621679091497Sym0DLet6989586621679094967Scrutinee_6989586621679091497Sym0KindInference7Let6989586621679094967Scrutinee_6989586621679091497Sym1DLet6989586621679094967Scrutinee_6989586621679091497Sym1KindInference7Let6989586621679094967Scrutinee_6989586621679091497Sym2DLet6989586621679094967Scrutinee_6989586621679091497Sym2KindInference7Let6989586621679094967Scrutinee_6989586621679091497Sym3DLet6989586621679094967Scrutinee_6989586621679091497Sym3KindInferenceversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName