QJD}      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw x y z { | (C) 2018-18 Edward Wastell!MIT -style (see the file LICENSE)!Edward Wastell <ed@wastell.co.uk> provisionalNone %&,/OQRTf}XMagic is stole from Constraints, and I don't really understand it, but it is needed for ~A type constraint for getting SingIA singleton type for BoolsZGive 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%&*+,/9:;<=DOQRTflAn 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 +,69:;DQRfKEverything 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 ,/:DIQRTf$A coordinate that clamps its numbersNone+,/9:;DIQRTf'8A coordinate with periodic boundaries, as if on a taurus '()*+,-./'() '()/.-,+*'()*+,-./None+,5:<=DQRTf =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 listE%Generate all possible coords in orderF Convert a A to its position in a vectorGECalculate the Moore neighbourhood around a point. Includes the centerHJCalculate the von Neuman neighbourhood around a point. Includes the center=>?@ABCDEFGHIJKLMNOPQR =>?@ABCDEFGHDABCRQPONMLKJ@?IE>F=GH=>?@ABCDEFGHIJKLMNOPQRNone,234:<=DIQRTfT2A Constraint that all grid sizes are instances of KnownNatUGiven 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.V/All but the first elements of a type level listW&The first element of a type level listXA multi dimensional sized grid[ Convert a vector into a list of Vector:s, where all the elements of the list have the given size.\~Convert a grid to a series of nested lists. This removes type level information, but it is sometimes easier to work with lists]rConvert a series of nested lists to a grid. If the size of the grid does not match the size of lists this will be TUVWXYZ[\]^_`abcdef TUVWXYZ[\]XYZfedcba`WVUT[\]_^TUVWXYZ[\]^_`abcdefNone 2349:;<=In Similar to X], 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 IsGridnopqrsnopqnopqsrnopqrs None 9:;<=?OTwConversion between X and n and access grids at a AxPGet the element at a grid location. This is a lens because we know it must existy&Convert to, or run a function over, a Xz&Convert to, or run a function over, a nwxyz{|wxyzwxyz|{wxyz{|None4'()89:<;=>?@ABCDEFGHTUVWXYZ[\]nopqwxyz:89<;      !"#$%&'()*+,-./00123456789:;<=>?@AB@CD@CE@FG@FGHIJKLLMNOPQRSTUVWXYZ[\]^_`abbcdefghijklmnopqrstuvwwxyz{|}~        )sized-grid-0.1.0.0-LlpdzwKLcdEJScOvvDkGY1SizedGrid.OrdinalSizedGrid.Coord.ClassSizedGrid.Coord.HardWrapSizedGrid.Coord.Periodic SizedGridSizedGrid.CoordSizedGrid.Grid.GridSizedGrid.Grid.FocusedSizedGrid.Grid.ClassSizedGrid.Internal.TypeOrdinal numToOrdinal ordinalToNum$fFromJSONKeyOrdinal$fToJSONKeyOrdinal$fFromJSONOrdinal$fToJSONOrdinal $fEnumOrdinal$fBoundedOrdinal$fRandomOrdinal $fOrdOrdinal $fEqOrdinal $fShowOrdinalIsCoord CoordSized asOrdinal zeroPosition sCoordSized maxCoordSize allCoordLike$fIsCoordOrdinalHardWrap unHardWrap$fAffineSpaceHardWrap$fMonoidHardWrap$fSemigroupHardWrap$fIsCoordHardWrap $fEqHardWrap$fShowHardWrap $fOrdHardWrap$fFromJSONKeyHardWrap$fToJSONKeyHardWrap$fFromJSONHardWrap$fToJSONHardWrap$fBoundedHardWrap$fEnumHardWrap$fRandomHardWrapPeriodic unPeriodic$fAffineSpacePeriodic$fAdditiveGroupPeriodic$fMonoidPeriodic$fSemigroupPeriodic$fIsCoordPeriodic$fEnumPeriodic $fEqPeriodic$fShowPeriodic $fOrdPeriodic$fFromJSONKeyPeriodic$fFromJSONPeriodic$fToJSONKeyPeriodic$fToJSONPeriodic$fRandomPeriodic*generics-sop-0.3.2.0-Atyu7FZupnIzSvvzQIW9tGenerics.SOP.SingSListIGenerics.SOP.ConstraintComposeAllGenerics.SOP.BasicFunctorsI AllDiffSame MaxCoordSizeMapDiff CoordDiffCoordunCoordLengthallCoord coordPosition moorePointsvonNeumanPoints$fAffineSpaceCoord $fRandomCoord$fAdditiveGroupCoord $fMonoidCoord$fSemigroupCoord$fFromJSONCoord $fToJSONCoord $fShowCoord $fOrdCoord $fEqCoord$fGenericCoordAllGridSizeKnown CollapseGridTailHeadGridunGridsplitVectorBySize collapseGrid gridFromList$fFromJSONGrid $fToJSONGrid$fTraversableWithIndexCoordGrid$fFoldableWithIndexCoordGrid$fFunctorWithIndexCoordGrid$fRepresentableGrid$fDistributiveGrid $fMonadGrid$fApplicativeGrid$fEqGrid $fShowGrid $fFunctorGrid$fFoldableGrid$fTraversableGrid $fEq1Grid $fShow1Grid FocusedGrid focusedGridfocusedGridPosition$fComonadStoreCoordFocusedGrid$fComonadFocusedGrid$fFunctorFocusedGrid$fFoldableFocusedGrid$fTraversableFocusedGridIsGrid gridIndexasGrid asFocusedGrid$fIsGridcsFocusedGrid$fIsGridcsGridMagictakeNatSBoolISBool sLessThan takeAddIsIdmagicsBoolSTrueSFalse $fSBoolIFalse $fSBoolITruebase Data.ProxyProxyGHC.BaseMonoid(vector-space-0.13-JywyNyyj8WjKpeX5w35dwiData.AffineSpaceDiffData.Functor.IdentityIdentityNothing Applicative$comonad-5.0.3-4ScHntUYeENArW9wfesEpvControl.ComonadComonadControl.Comonad.Store.Class ComonadStore