-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Arbitrary sized type-safe grids with useful combinators @package grids @version 0.1.0.0 module Data.Grid newtype Grid (dims :: [Nat]) a Grid :: Vector a -> Grid a type family GridSize dims :: Nat data x :# y (:#) :: x -> y -> (:#) x y infixr 9 :# infixr 9 :# type family Coord (dims :: [Nat]) sizeof :: forall (dims :: [Nat]). KnownNat (GridSize dims) => Proxy dims -> Int type NumericConstraints dims = (KnownNat (GridSize dims)) type Dims = [Int] class (NumericConstraints dims, KnownNat (GridSize dims)) => Dimensions (dims :: [Nat]) toCoord :: Dimensions dims => Proxy dims -> Finite (GridSize dims) -> Coord dims fromCoord :: Dimensions dims => Proxy dims -> Coord dims -> Finite (GridSize dims) toCoord' :: Dims -> Int -> [Int] fromCoord' :: Dims -> [Int] -> Int toFinite :: KnownNat n => Integral m => m -> Finite n fromFinite :: Num n => Finite m -> n generate :: forall dims a. Dimensions dims => (Int -> a) -> Grid dims a type family NestedLists (dims :: [Nat]) a class NestLists (dims :: [Nat]) nestLists :: NestLists dims => Proxy dims -> Vector a -> NestedLists dims a chunkVector :: forall n a. KnownNat n => Proxy n -> Vector a -> [Vector a] toNestedLists :: forall dims a. NestLists dims => Grid dims a -> NestedLists dims a class UnNestLists (dims :: [Nat]) unNestLists :: UnNestLists dims => Proxy dims -> NestedLists dims a -> [a] fromNestedLists :: forall dims a. (UnNestLists dims, Dimensions dims) => NestedLists dims a -> Maybe (Grid dims a) fromList :: forall a dims. Dimensions dims => [a] -> Maybe (Grid dims a) (//) :: forall dims a. Dimensions dims => Grid dims a -> [(Coord dims, a)] -> Grid dims a instance (GHC.Classes.Ord x, GHC.Classes.Ord y) => GHC.Classes.Ord (x Data.Grid.:# y) instance (GHC.Classes.Eq x, GHC.Classes.Eq y) => GHC.Classes.Eq (x Data.Grid.:# y) instance (GHC.Show.Show x, GHC.Show.Show y) => GHC.Show.Show (x Data.Grid.:# y) instance Data.Traversable.Traversable (Data.Grid.Grid dims) instance Data.Foldable.Foldable (Data.Grid.Grid dims) instance GHC.Base.Functor (Data.Grid.Grid dims) instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Grid.Grid dims a) instance Data.Grid.UnNestLists '[n] instance Data.Grid.UnNestLists (n : ns) => Data.Grid.UnNestLists (m : n : ns) instance (Data.Grid.NestLists dims, GHC.Show.Show (Data.Grid.NestedLists dims a)) => GHC.Show.Show (Data.Grid.Grid dims a) instance GHC.TypeNats.KnownNat n => Data.Grid.NestLists '[n] instance (GHC.TypeNats.KnownNat n, Data.Grid.NestLists (n : ns), Data.Grid.Dimensions (m : n : ns), Data.Grid.Dimensions (n : ns)) => Data.Grid.NestLists (m : n : ns) instance (Data.Grid.Dimensions dims, GHC.Base.Semigroup a) => GHC.Base.Semigroup (Data.Grid.Grid dims a) instance (Data.Grid.Dimensions dims, GHC.Base.Monoid a) => GHC.Base.Monoid (Data.Grid.Grid dims a) instance Data.Grid.Dimensions dims => GHC.Base.Applicative (Data.Grid.Grid dims) instance GHC.TypeNats.KnownNat x => Data.Grid.Dimensions '[x] instance (GHC.TypeNats.KnownNat (x GHC.TypeNats.* Data.Grid.GridSize (y : xs)), GHC.TypeNats.KnownNat x, Data.Grid.Dimensions (y : xs)) => Data.Grid.Dimensions (x : y : xs) instance Data.Grid.Dimensions dims => Data.Distributive.Distributive (Data.Grid.Grid dims) instance Data.Grid.Dimensions dims => Data.Functor.Rep.Representable (Data.Grid.Grid dims) instance (Data.Grid.Dimensions dims, ind Data.Type.Equality.~ Data.Grid.Coord dims) => Control.Lens.Indexed.FunctorWithIndex ind (Data.Grid.Grid dims) instance (Data.Grid.Dimensions dims, ind Data.Type.Equality.~ Data.Grid.Coord dims) => Control.Lens.Indexed.FoldableWithIndex ind (Data.Grid.Grid dims) instance (Data.Grid.Dimensions dims, ind Data.Type.Equality.~ Data.Grid.Coord dims) => Control.Lens.Indexed.TraversableWithIndex ind (Data.Grid.Grid dims) module Data.Grid.Lens cell :: (Dimensions dims, Eq (Coord dims)) => Coord dims -> Lens' (Grid dims a) a