-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | See readme.md -- -- See readme.md for description. @package numhask-array @version 0.0.2 module NumHask.Array.Constraints dimShuffle :: forall a_aoWe. Eq a_aoWe => [a_aoWe] -> [Nat] -> [a_aoWe] -- | Reduces axis i in shape s. Does not maintain singlton dimension. -- | Reduces axis i in shape s. Maintains singlton dimension instance Data.Singletons.SuppressUnusedWarnings.SuppressUnusedWarnings NumHask.Array.Constraints.Let6989586621679108046Scrutinee_6989586621679105664Sym3 instance Data.Singletons.SuppressUnusedWarnings.SuppressUnusedWarnings NumHask.Array.Constraints.Let6989586621679108046Scrutinee_6989586621679105664Sym2 instance Data.Singletons.SuppressUnusedWarnings.SuppressUnusedWarnings NumHask.Array.Constraints.Let6989586621679108046Scrutinee_6989586621679105664Sym1 instance Data.Singletons.SuppressUnusedWarnings.SuppressUnusedWarnings NumHask.Array.Constraints.Let6989586621679108046Scrutinee_6989586621679105664Sym0 instance Data.Singletons.SuppressUnusedWarnings.SuppressUnusedWarnings NumHask.Array.Constraints.DimShuffleSym1 instance Data.Singletons.SuppressUnusedWarnings.SuppressUnusedWarnings NumHask.Array.Constraints.DimShuffleSym0 instance GHC.Classes.Eq GHC.Types.Nat instance GHC.Classes.Ord GHC.Types.Nat -- | safe-typed n-dimensional arrays module NumHask.Array -- | an n-dimensional array where shape is specified at the type level The -- main purpose of this, beyond safe typing, is to supply the -- Representable instance with an initial object. -- --
--   >>> 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]]]
--   
newtype Array (r :: [Nat]) a Array :: (Vector a) -> Array a -- | an n-dimensional array where shape is specified at the value level data SomeArray a SomeArray :: [Int] -> (Vector a) -> SomeArray a -- | extract the row of a matrix row :: forall i a m n. (KnownNat m, KnownNat n, KnownNat i, (i :< m) ~ True) => Proxy i -> Array '[m, n] a -> Array '[n] a -- | extract the column of a matrix col :: forall j a m n. (KnownNat m, KnownNat n, KnownNat j, (j :< n) ~ True) => Proxy j -> Array '[m, n] a -> Array '[m] a unsafeRow :: forall a m n. (KnownNat m, KnownNat n) => Int -> Array '[m, n] a -> Array '[n] a unsafeCol :: forall a m n. (KnownNat m, KnownNat n) => Int -> Array '[m, n] a -> Array '[m] a -- |
--   >>> slice (Proxy :: Proxy '[ '[0,1],'[2],'[1,2]]) a
--   [[[10, 11]],
--    [[22, 23]]]
--   
slice :: forall s r a. (SingI s, SingI r, And (ZipWith AllLTSym0 s r) ~ True) => Proxy s -> Array r a -> Array (Slice s) a -- |
--   >>> unsafeSlice [[0,1],[2],[1,2]] a :: Array '[2,1,2] Int
--   [[[10, 11]],
--    [[22, 23]]]
--   
unsafeSlice :: (SingI r) => [[Int]] -> Array r a -> Array r0 a index :: Representable f => forall a. f a -> Rep f -> a -- |
--   >>> unsafeIndex a [0,2,1]
--   10
--   
unsafeIndex :: SingI r => Array r a -> [Int] -> a -- |
--   >>> foldAlong (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 foldAlong :: forall s vw uvw uw w a. (SingI s, SingI uvw, uw ~ (Fold s uvw), w ~ (Drop 1 vw), vw ~ (TailModule s uvw)) => Proxy s -> (Array vw a -> Array w a) -> Array uvw a -> Array uw a -- |
--   >>> mapAlong (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]]]
--   
mapAlong :: forall s uvw vw a. (SingI s, SingI uvw, vw ~ (HeadModule s uvw)) => Proxy s -> (Array vw a -> Array vw a) -> Array uvw a -> Array uvw a -- |
--   >>> 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]]]
--   
concatenate :: forall s r t a. (SingI s, SingI r, SingI t, (IsValidConcat s t r) ~ True) => Proxy s -> Array r a -> Array t a -> Array (Concatenate s t r) a zipWith :: (a -> a -> a) -> Array s a -> Array s a -> Array s a -- |
--   >>> 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]]]
--   
transpose :: forall s t a. (t ~ Transpose s) => Array s a -> Array t a -- |
--   >>> let a = [1..24] :: Array '[2,1,3,4,1] Int
--   
--   >>> 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]]]]]
--   
--   >>> 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]]]
--   
squeeze :: forall s t a. (t ~ Squeeze s) => Array s a -> Array t a -- | outer product -- -- todo: reconcile with numhask version -- --
--   >>> v >< v
--   [[1, 2, 3],
--    [2, 4, 6],
--    [3, 6, 9]]
--   
(><) :: forall (r :: [Nat]) (s :: [Nat]) a. (CRing a, SingI r, SingI s, SingI (r :++ s)) => Array r a -> Array s a -> Array (r :++ s) a -- | matrix multiplication for a '2-Array' -- --
--   >>> let a = [1, 2, 3, 4] :: Array '[2, 2] Int
--   
--   >>> let b = [5, 6, 7, 8] :: Array '[2, 2] Int
--   
--   >>> a
--   [[1, 2],
--    [3, 4]]
--   
--   >>> b
--   [[5, 6],
--    [7, 8]]
--   
--   >>> mmult a b
--   [[19, 22],
--    [43, 50]]
--   
mmult :: forall m n k a. (Semiring a, Num a, CRing a, KnownNat m, KnownNat n, KnownNat k) => Array '[m, k] a -> Array '[k, n] a -> Array '[m, n] a -- | The fromList function constructs the structure l from -- the given list of Item l fromList :: IsList l => [Item l] -> l instance Data.Foldable.Foldable NumHask.Array.SomeArray instance GHC.Classes.Eq a => GHC.Classes.Eq (NumHask.Array.SomeArray a) instance GHC.Base.Functor NumHask.Array.SomeArray instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (NumHask.Array.Array r a) instance GHC.Generics.Generic1 (NumHask.Array.Array r) instance GHC.Generics.Generic (NumHask.Array.Array r a) instance Data.Foldable.Foldable (NumHask.Array.Array r) instance GHC.Classes.Eq a => GHC.Classes.Eq (NumHask.Array.Array r a) instance GHC.Base.Functor (NumHask.Array.Array r) instance Data.Singletons.SingI r => NumHask.Shape.HasShape (NumHask.Array.Array r) instance Data.Singletons.SingI r => Data.Distributive.Distributive (NumHask.Array.Array r) instance Data.Singletons.SingI r => Data.Functor.Rep.Representable (NumHask.Array.Array r) instance (Data.Singletons.SingI r, GHC.Num.Num a) => GHC.Exts.IsList (NumHask.Array.Array r a) instance GHC.Show.Show a => GHC.Show.Show (NumHask.Array.SomeArray a) instance (GHC.Show.Show a, Data.Singletons.SingI r) => GHC.Show.Show (NumHask.Array.Array r a) instance (Data.Singletons.SingI r, NumHask.Algebra.Additive.AdditiveMagma a) => NumHask.Algebra.Additive.AdditiveMagma (NumHask.Array.Array r a) instance (Data.Singletons.SingI r, NumHask.Algebra.Additive.AdditiveUnital a) => NumHask.Algebra.Additive.AdditiveUnital (NumHask.Array.Array r a) instance (Data.Singletons.SingI r, NumHask.Algebra.Additive.AdditiveAssociative a) => NumHask.Algebra.Additive.AdditiveAssociative (NumHask.Array.Array r a) instance (Data.Singletons.SingI r, NumHask.Algebra.Additive.AdditiveCommutative a) => NumHask.Algebra.Additive.AdditiveCommutative (NumHask.Array.Array r a) instance (Data.Singletons.SingI r, NumHask.Algebra.Additive.AdditiveInvertible a) => NumHask.Algebra.Additive.AdditiveInvertible (NumHask.Array.Array r a) instance (Data.Singletons.SingI r, NumHask.Algebra.Additive.Additive a) => NumHask.Algebra.Additive.Additive (NumHask.Array.Array r a) instance (Data.Singletons.SingI r, NumHask.Algebra.Additive.AdditiveGroup a) => NumHask.Algebra.Additive.AdditiveGroup (NumHask.Array.Array r a) instance (Data.Singletons.SingI r, NumHask.Algebra.Multiplicative.MultiplicativeMagma a) => NumHask.Algebra.Multiplicative.MultiplicativeMagma (NumHask.Array.Array r a) instance (Data.Singletons.SingI r, NumHask.Algebra.Multiplicative.MultiplicativeUnital a) => NumHask.Algebra.Multiplicative.MultiplicativeUnital (NumHask.Array.Array r a) instance (Data.Singletons.SingI r, NumHask.Algebra.Multiplicative.MultiplicativeAssociative a) => NumHask.Algebra.Multiplicative.MultiplicativeAssociative (NumHask.Array.Array r a) instance (Data.Singletons.SingI r, NumHask.Algebra.Multiplicative.MultiplicativeCommutative a) => NumHask.Algebra.Multiplicative.MultiplicativeCommutative (NumHask.Array.Array r a) instance (Data.Singletons.SingI r, NumHask.Algebra.Multiplicative.MultiplicativeInvertible a) => NumHask.Algebra.Multiplicative.MultiplicativeInvertible (NumHask.Array.Array r a) instance (Data.Singletons.SingI r, NumHask.Algebra.Multiplicative.Multiplicative a) => NumHask.Algebra.Multiplicative.Multiplicative (NumHask.Array.Array r a) instance (Data.Singletons.SingI r, NumHask.Algebra.Multiplicative.MultiplicativeGroup a) => NumHask.Algebra.Multiplicative.MultiplicativeGroup (NumHask.Array.Array r a) instance (Data.Singletons.SingI r, NumHask.Algebra.Multiplicative.MultiplicativeMagma a, NumHask.Algebra.Additive.Additive a) => NumHask.Algebra.Distribution.Distribution (NumHask.Array.Array r a) instance (Data.Singletons.SingI r, NumHask.Algebra.Ring.Semiring a) => NumHask.Algebra.Ring.Semiring (NumHask.Array.Array r a) instance (Data.Singletons.SingI r, NumHask.Algebra.Ring.Ring a) => NumHask.Algebra.Ring.Ring (NumHask.Array.Array r a) instance (Data.Singletons.SingI r, NumHask.Algebra.Ring.CRing a) => NumHask.Algebra.Ring.CRing (NumHask.Array.Array r a) instance (Data.Singletons.SingI r, NumHask.Algebra.Field.Field a) => NumHask.Algebra.Field.Field (NumHask.Array.Array r a) instance (Data.Singletons.SingI r, NumHask.Algebra.Field.ExpField a) => NumHask.Algebra.Field.ExpField (NumHask.Array.Array r a) instance (Data.Singletons.SingI r, NumHask.Algebra.Field.BoundedField a) => NumHask.Algebra.Field.BoundedField (NumHask.Array.Array r a) instance (Data.Singletons.SingI r, NumHask.Algebra.Metric.Signed a) => NumHask.Algebra.Metric.Signed (NumHask.Array.Array r a) instance NumHask.Algebra.Field.ExpField a => NumHask.Algebra.Metric.Normed (NumHask.Array.Array r a) a instance (Data.Singletons.SingI r, NumHask.Algebra.Metric.Epsilon a) => NumHask.Algebra.Metric.Epsilon (NumHask.Array.Array r a) instance (Data.Singletons.SingI r, NumHask.Algebra.Field.ExpField a) => NumHask.Algebra.Metric.Metric (NumHask.Array.Array r a) a instance (Data.Singletons.SingI r, NumHask.Algebra.Integral.Integral a) => NumHask.Algebra.Integral.Integral (NumHask.Array.Array r a) instance (NumHask.Algebra.Ring.CRing a, GHC.Num.Num a, NumHask.Algebra.Ring.Semiring a, Data.Singletons.SingI r) => NumHask.Algebra.Module.Hilbert (NumHask.Array.Array r) a -- | Experimental api following -- https://pechersky.github.io/haskell-numpy-docs/quickstart.basics.html module NumHask.Array.Example