úÎTæLd‡      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€ ‚ ƒ „ … † (C) 2018-18 Edward Wastell!MIT -style (see the file LICENSE)!Edward Wastell <ed@wastell.co.uk> provisionalNone &'-0QSTVhë‡XMagic is stole from Constraints, and I don't really understand it, but it is needed for ˆ‰A type constraint for getting SingIŠA singleton type for Bools‹ZGive a runtime representation of a type level number being less than or equal than anotherŒ A Dict prove that m - 1 + 1 is mAlso don't understandˆARuntime proof that n - m is an insance of KnownNat if n and m are ‡Ž‰Š‘‹Œˆ‡މŠ‘None&'+,-0;<=>?FQSTVh,lAn Ordinal can only hold m different values, ususally corresponding to 0 .. m - 1. We store it here using a ’L of a type level number and use constraints to keep the required invariants.zDesprite represeting a number, Ordinal is not an instance of Num and many functions (such as negate) would only be partialEConvert a normal integral to an ordinal. If it is outside the range ( 0or= m), Nothing is returned.&Transform an ordinal to a given number None,-7;<=FQSTVh"bKEverything that can be uses as a Coordinate. The only required function is  and the type instance of (: the rest can be derived automatically.’This is kind * -> Constraint for ease of use later. There is some argument that it should be of kind (Nat -> *) -> Constraint and we could remove ", but that has other complications2The maximum number of values that a Coord can takeWAs each coord represents a finite number of states, it must be isomorphic to an Ordinal#The origin. If c is an instance of “, this should be mempty Retrive a ’ of the size'The largest possible number expressable2Enumerate all possible values of a coord, in order None,-0;<=FKSTVh$g8A coordinate with periodic boundaries, as if on a taurus #"! None -0<FKSTVh%Ü,$A coordinate that clamps its numbers,-.,-.210/,-.None,-6;<=>?FSTVh6=2All Diffs of the members of the list must be equal>MThe number of elements a coord can have. This is equal to the product of the  of each element?Apply ”d to each element of a type level list. This is required as type families can't be partially applied.@OThe type of difference between two coords. A n-dimensional coord should have a ” of an n-tuple of Integers . We use •F and our 1-tuple. Unfortuantly, each instance is manual at the moment.AA multideminsion coordinateDLength of a type level listFaGet the first element of a coord. Thanks to type level information, we can write this as a total –GA – into the the tail of AH-Turn a single element into a one dimensional AIAdd a new element to a A#. This increases the dimensionalityJ%Generate all possible coords in orderK Convert a A to its position in a vectorLECalculate the Moore neighbourhood around a point. Includes the centerMJCalculate the von Neuman neighbourhood around a point. Includes the center=>?@ABCDEFGHIJKLM DABCE[ZYXWVUTSFGHIRQPON@?\J>K=LMABCNone-345<>?FKSTVhB/^2A Constraint that all grid sizes are instances of KnownNat_Given a grid type, give back a series of nested lists repesenting the grid. The lists will have a number of layers equal to the dimensionality.`/All but the first elements of a type level lista&The first element of a type level listbA multi dimensional sized gride Convert a vector into a list of Vector:s, where all the elements of the list have the given size.f~Convert a grid to a series of nested lists. This removes type level information, but it is sometimes easier to work with listsgrConvert a series of nested lists to a grid. If the size of the grid does not match the size of lists this will be — ^_`abcdefgbcdnmlkjiha`_^efgpobcdNone 345;<=>?KFÄx Similar to b], but this has a focus on a certain square. Becuase of this we loose some instances, such as ˜, but we gain a ™ and šR instance. We can convert between a focused and unfocused list using facilites in IsGridxy{zxyz{}|xyz{ None ;<=>?AQVJõConversion between b and x and access grids at a A‚PGet the element at a grid location. This is a lens because we know it must existƒ&Convert to, or run a function over, a b„&Convert to, or run a function over, a x„ƒ‚‚ƒ„†…‚ƒ„NoneKf9,-.=>?@ABCDEFGHIJKLM^_`abcdefgxyz{‚ƒ„›      !"#$%&'(()*+,-./01234567889:;<=>?@ABCDEFGHIJKLLMNOPQRSTUVWXYZ[\]^_`abcdefghijkllmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ ‰ Š ‹ Œ Ž  ‘ ’ “ ” •  – — ˜™š›™œžŸ ™¡¢£¤¥™œ¦™œ§¨©ª¨«¬­)sized-grid-0.1.1.0-L0M4rnLtRA7L2yFvGQ8gsz SizedGridSizedGrid.OrdinalSizedGrid.Coord.ClassSizedGrid.Coord.PeriodicSizedGrid.Coord.HardWrapSizedGrid.CoordSizedGrid.Grid.GridSizedGrid.Grid.FocusedSizedGrid.Grid.ClassSizedGrid.Internal.Type+generics-sop-0.3.2.0-6KSYi96kG7ZAyHbFGBJahbGenerics.SOP.ConstraintAllComposeGenerics.SOP.SingSListIGenerics.SOP.BasicFunctorsIOrdinal numToOrdinal ordinalToNum$fFromJSONKeyOrdinal$fToJSONKeyOrdinal$fFromJSONOrdinal$fToJSONOrdinal $fEnumOrdinal$fBoundedOrdinal$fRandomOrdinal $fOrdOrdinal $fEqOrdinal $fShowOrdinalIsCoord CoordSized asOrdinal zeroPosition sCoordSized maxCoordSize allCoordLike$fIsCoordOrdinalPeriodic unPeriodic$fAffineSpacePeriodic$fAdditiveGroupPeriodic$fMonoidPeriodic$fSemigroupPeriodic$fIsCoordPeriodic$fEnumPeriodic $fEqPeriodic$fShowPeriodic $fOrdPeriodic$fFromJSONKeyPeriodic$fFromJSONPeriodic$fToJSONKeyPeriodic$fToJSONPeriodic$fRandomPeriodicHardWrap unHardWrap$fAffineSpaceHardWrap$fMonoidHardWrap$fSemigroupHardWrap$fIsCoordHardWrap $fEqHardWrap$fShowHardWrap $fOrdHardWrap$fFromJSONKeyHardWrap$fToJSONKeyHardWrap$fFromJSONHardWrap$fToJSONHardWrap$fBoundedHardWrap$fEnumHardWrap$fRandomHardWrap AllDiffSame MaxCoordSizeMapDiff CoordDiffCoordunCoordLength _WrappedCoord coordHead coordTail singleCoord appendCoordallCoord coordPosition moorePointsvonNeumanPoints$fField5CoordCoordee'$fField4CoordCoorddd'$fField3CoordCoordcc'$fField2CoordCoordbb'$fField1CoordCoordaa' $fRandomCoord$fAdditiveGroupCoord $fMonoidCoord$fSemigroupCoord$fFromJSONCoord $fToJSONCoord $fShowCoord $fOrdCoord $fEqCoord$fAffineSpaceCoord$fGenericCoordAllGridSizeKnown CollapseGridTailHeadGridunGridsplitVectorBySize collapseGrid gridFromList$fTraversableWithIndexCoordGrid$fFoldableWithIndexCoordGrid$fFunctorWithIndexCoordGrid$fRepresentableGrid$fDistributiveGrid $fMonadGrid$fApplicativeGrid$fFromJSONGrid $fToJSONGrid$fEqGrid $fShowGrid $fFunctorGrid$fFoldableGrid$fTraversableGrid $fEq1Grid $fShow1Grid FocusedGrid focusedGridfocusedGridPosition$fComonadStoreCoordFocusedGrid$fComonadFocusedGrid$fFunctorFocusedGrid$fFoldableFocusedGrid$fTraversableFocusedGridIsGrid gridIndexasGrid asFocusedGrid$fIsGridcsFocusedGrid$fIsGridcsGridMagictakeNatSBoolISBool sLessThan takeAddIsIdmagicsBoolSFalseSTruebase Data.ProxyProxyGHC.BaseMonoid(vector-space-0.13-GXOaDRWEbYx2S8Sp58P20BData.AffineSpaceDiffData.Functor.IdentityIdentity"lens-4.16.1-IaO9MmIHAXuJo9lWA5yESiControl.Lens.TypeLensNothing Applicative$comonad-5.0.3-1cpfwxCtjMKLA9TaNW7fzxControl.ComonadComonadControl.Comonad.Store.Class ComonadStore