hGVO      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMN         !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     6return the size (number of possible elements) in type ix. $add an arbitary index to a specific ix position.  look at an ix as an , typically just an O. @project any 2D array position onto any array. Helper method for P.  A list of all possible indices.  Unlike indices# in Matrix, this does not need the Matrix 5 argument, because the types determine the contents. _A good way of converting from one index type to another index type, typically in another base.    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~          ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     %/ is shown as the contents, without the quotes. C One use is a matrix of S, so that you can do show-style functions  using fmap. A 8 is an array with the sized determined uniquely by the  type of the index type, ix. $ looks up an element in the matrix. , turns a matrix into an always finite list. S turns a finite list into a matrix. You often need to give the type of the result. S turns a finite list into a matrix. You often need to give the type of the result.  is a version of G that takes a type, for forcing the result type using the Matrix type.   what is the length of a matrix? !! extracts the index/ value pairs. "#$$. is for use to force typing issues, and is 0. %%' returns a matrix filled with indexes. &Same as for lists. ''_ takes a matrix, and calls a function for each element, to give a new matrix of the same size. ((9 creates a matrix out of a mapping from the coordinates. )) is the 2D matrix multiply. ** a 2D matrix. +0return the identity for a specific matrix size. ,stack two matrixes , each other. -stack two matrixes - each other. .3look at a matrix through a lens to another matrix. /<look at a matrix through a functor lens, to another matrix. 0grab part of a matrix. 1slice a 2D matrix into rows. 2 slice a 2D matrix into columns. 30join a matrix of matrixes into a single matrix. 40join a matrix of matrixes into a single matrix. 5+generate a 2D single row from a 1D matrix. 6'generate a 1D matrix from a 2D matrix. 7.generate a 2D single column from a 1D matrix. 8'generate a 1D matrix from a 2D matrix. 9Wvery general; required that m and n have the same number of elements, rebundle please. ::- displays a 2D matrix, and is the worker for P. , GHCi> matrix [1..42] :: Matrix (X7,X6) Int  [ 1, 2, 3, 4, 5, 6,  7, 8, 9, 10, 11, 12,  13, 14, 15, 16, 17, 18,  19, 20, 21, 22, 23, 24,  25, 26, 27, 28, 29, 30,  31, 32, 33, 34, 35, 36,  37, 38, 39, 40, 41, 42 ]  ;2  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;% !"#$%&'()*+,-./0123456789:;% !"#$%&'()*+,-./0123456789:; <=>??G looks up an element in the sparse matrix. If the element is not found  in the sparse matrix, ? returns the default value. @AB%Make a Matrix sparse, with a default zero value. CDEFG<=>Q?@ABRCDEFSTUVG <=>?@ABCDEFG <==>?@ABCDEFGHWIJXHIJHIJHIJKcommon; numerically boolean. LYMNZKLMNLMNKKLMN[       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@A+BC,(DEFGHEFIJKLMNOPQRSTDUHVWsized-types-0.1Data.Sized.Arith Data.Sized.IxData.Sized.MatrixData.Sized.Sparse.MatrixData.Sized.SignedData.Sized.UnsignedAPP0APP1SUCCSUBNOTADDX1_X0_X0N1X256X255X254X253X252X251X250X249X248X247X246X245X244X243X242X241X240X239X238X237X236X235X234X233X232X231X230X229X228X227X226X225X224X223X222X221X220X219X218X217X216X215X214X213X212X211X210X209X208X207X206X205X204X203X202X201X200X199X198X197X196X195X194X193X192X191X190X189X188X187X186X185X184X183X182X181X180X179X178X177X176X175X174X173X172X171X170X169X168X167X166X165X164X163X162X161X160X159X158X157X156X155X154X153X152X151X150X149X148X147X146X145X144X143X142X141X140X139X138X137X136X135X134X133X132X131X130X129X128X127X126X125X124X123X122X121X120X119X118X117X116X115X114X113X112X111X110X109X108X107X106X105X104X103X102X101X100X99X98X97X96X95X94X93X92X91X90X89X88X87X86X85X84X83X82X81X80X79X78X77X76X75X74X73X72X71X70X69X68X67X66X65X64X63X62X61X60X59X58X57X56X55X54X53X52X51X50X49X48X47X46X45X44X43X42X41X40X39X38X37X36X35X34X33X32X31X30X29X28X27X26X25X24X23X22X21X20X19X18X17X16X15X14X13X12X11X10X9X8X7X6X5X4X3X2X1SizesizeaddIndextoIndexseeIn2DColumnRowIndexall coerceSizeSMatrix!toListfromListmatrixindiceslengthassocs//accumzeroOfcoordzipWithforEachforAllmm transposeidentityabovebesideixmapixfmapcropAtrowscolumnsjoinRows joinColumnsunitRowunRow unitColumnunColumnsquash showMatrixshowAs fromAssocListfillprunesparserowSets columnSetsSignedtoMatrix fromMatrixU1Unsignedghc-prim GHC.TypesIntbaseGHC.Showshow toAssocListfoldb1m1m2m3m4mkSigned mkUnsigned