ox-arrays-0.1.0.0: An efficient CPU-based multidimensional array (tensor) library
Safe HaskellNone
LanguageHaskell2010

Data.Array.Nested.Ranked.Shape

Synopsis

Ranked lists

data ListR (n :: Nat) i where Source #

Constructors

ZR :: forall i. ListR 0 i 
(:::) :: forall (n1 :: Natural) {i}. i -> ListR n1 i -> ListR (n1 + 1) i infixr 3 

Instances

Instances details
Foldable (ListR n) Source # 
Instance details

Defined in Data.Array.Nested.Ranked.Shape

Methods

fold :: Monoid m => ListR n m -> m #

foldMap :: Monoid m => (a -> m) -> ListR n a -> m #

foldMap' :: Monoid m => (a -> m) -> ListR n a -> m #

foldr :: (a -> b -> b) -> b -> ListR n a -> b #

foldr' :: (a -> b -> b) -> b -> ListR n a -> b #

foldl :: (b -> a -> b) -> b -> ListR n a -> b #

foldl' :: (b -> a -> b) -> b -> ListR n a -> b #

foldr1 :: (a -> a -> a) -> ListR n a -> a #

foldl1 :: (a -> a -> a) -> ListR n a -> a #

toList :: ListR n a -> [a] #

null :: ListR n a -> Bool #

length :: ListR n a -> Int #

elem :: Eq a => a -> ListR n a -> Bool #

maximum :: Ord a => ListR n a -> a #

minimum :: Ord a => ListR n a -> a #

sum :: Num a => ListR n a -> a #

product :: Num a => ListR n a -> a #

Functor (ListR n) Source # 
Instance details

Defined in Data.Array.Nested.Ranked.Shape

Methods

fmap :: (a -> b) -> ListR n a -> ListR n b #

(<$) :: a -> ListR n b -> ListR n a #

KnownNat n => IsList (ListR n i) Source #

Untyped: length is checked at runtime.

Instance details

Defined in Data.Array.Nested.Ranked.Shape

Associated Types

type Item (ListR n i) 
Instance details

Defined in Data.Array.Nested.Ranked.Shape

type Item (ListR n i) = i

Methods

fromList :: [Item (ListR n i)] -> ListR n i #

fromListN :: Int -> [Item (ListR n i)] -> ListR n i #

toList :: ListR n i -> [Item (ListR n i)] #

Show i => Show (ListR n i) Source # 
Instance details

Defined in Data.Array.Nested.Ranked.Shape

Methods

showsPrec :: Int -> ListR n i -> ShowS #

show :: ListR n i -> String #

showList :: [ListR n i] -> ShowS #

NFData i => NFData (ListR n i) Source # 
Instance details

Defined in Data.Array.Nested.Ranked.Shape

Methods

rnf :: ListR n i -> () #

Eq i => Eq (ListR n i) Source # 
Instance details

Defined in Data.Array.Nested.Ranked.Shape

Methods

(==) :: ListR n i -> ListR n i -> Bool #

(/=) :: ListR n i -> ListR n i -> Bool #

Ord i => Ord (ListR n i) Source # 
Instance details

Defined in Data.Array.Nested.Ranked.Shape

Methods

compare :: ListR n i -> ListR n i -> Ordering #

(<) :: ListR n i -> ListR n i -> Bool #

(<=) :: ListR n i -> ListR n i -> Bool #

(>) :: ListR n i -> ListR n i -> Bool #

(>=) :: ListR n i -> ListR n i -> Bool #

max :: ListR n i -> ListR n i -> ListR n i #

min :: ListR n i -> ListR n i -> ListR n i #

type Item (ListR n i) Source # 
Instance details

Defined in Data.Array.Nested.Ranked.Shape

type Item (ListR n i) = i

data UnconsListRRes i (n1 :: Natural) Source #

Constructors

(n + 1) ~ n1 => UnconsListRRes (ListR n i) i 

listrUncons :: forall (n1 :: Nat) i. ListR n1 i -> Maybe (UnconsListRRes i n1) Source #

listrEqRank :: forall (n :: Nat) i (n' :: Nat). ListR n i -> ListR n' i -> Maybe (n :~: n') Source #

This checks only whether the ranks are equal, not whether the actual values are.

listrEqual :: forall i (n :: Nat) (n' :: Nat). Eq i => ListR n i -> ListR n' i -> Maybe (n :~: n') Source #

This compares the lists for value equality.

listrShow :: forall (n :: Nat) i. (i -> ShowS) -> ListR n i -> ShowS Source #

listrLength :: forall (n :: Nat) i. ListR n i -> Int Source #

listrRank :: forall (n :: Nat) i. ListR n i -> SNat n Source #

listrAppend :: forall (n :: Nat) i (m :: Nat). ListR n i -> ListR m i -> ListR (n + m) i Source #

listrFromList :: [i] -> (forall (n :: Nat). ListR n i -> r) -> r Source #

listrHead :: forall (n :: Natural) i. ListR (n + 1) i -> i Source #

listrTail :: forall (n :: Natural) i. ListR (n + 1) i -> ListR n i Source #

listrInit :: forall (n :: Natural) i. ListR (n + 1) i -> ListR n i Source #

listrLast :: forall (n :: Natural) i. ListR (n + 1) i -> i Source #

listrCast :: forall (n' :: Nat) (n :: Nat) i. SNat n' -> ListR n i -> ListR n' i Source #

Performs a runtime check that the lengths are identical.

listrIndex :: forall (k :: Natural) (n :: Natural) i. (k + 1) <= n => SNat k -> ListR n i -> i Source #

listrZip :: forall (n :: Nat) i j. ListR n i -> ListR n j -> ListR n (i, j) Source #

listrZipWith :: forall i j k (n :: Nat). (i -> j -> k) -> ListR n i -> ListR n j -> ListR n k Source #

listrPermutePrefix :: forall i (n :: Nat). [Int] -> ListR n i -> ListR n i Source #

Ranked indices

newtype IxR (n :: Nat) i Source #

An index into a rank-typed array.

Constructors

IxR (ListR n i) 

Instances

Instances details
Foldable (IxR n) Source # 
Instance details

Defined in Data.Array.Nested.Ranked.Shape

Methods

fold :: Monoid m => IxR n m -> m #

foldMap :: Monoid m => (a -> m) -> IxR n a -> m #

foldMap' :: Monoid m => (a -> m) -> IxR n a -> m #

foldr :: (a -> b -> b) -> b -> IxR n a -> b #

foldr' :: (a -> b -> b) -> b -> IxR n a -> b #

foldl :: (b -> a -> b) -> b -> IxR n a -> b #

foldl' :: (b -> a -> b) -> b -> IxR n a -> b #

foldr1 :: (a -> a -> a) -> IxR n a -> a #

foldl1 :: (a -> a -> a) -> IxR n a -> a #

toList :: IxR n a -> [a] #

null :: IxR n a -> Bool #

length :: IxR n a -> Int #

elem :: Eq a => a -> IxR n a -> Bool #

maximum :: Ord a => IxR n a -> a #

minimum :: Ord a => IxR n a -> a #

sum :: Num a => IxR n a -> a #

product :: Num a => IxR n a -> a #

Functor (IxR n) Source # 
Instance details

Defined in Data.Array.Nested.Ranked.Shape

Methods

fmap :: (a -> b) -> IxR n a -> IxR n b #

(<$) :: a -> IxR n b -> IxR n a #

Generic (IxR n i) Source # 
Instance details

Defined in Data.Array.Nested.Ranked.Shape

Associated Types

type Rep (IxR n i) 
Instance details

Defined in Data.Array.Nested.Ranked.Shape

type Rep (IxR n i) = D1 ('MetaData "IxR" "Data.Array.Nested.Ranked.Shape" "ox-arrays-0.1.0.0-G9rS3ky7ORtC6G06Mvzq1I" 'True) (C1 ('MetaCons "IxR" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ListR n i))))

Methods

from :: IxR n i -> Rep (IxR n i) x #

to :: Rep (IxR n i) x -> IxR n i #

KnownNat n => IsList (IxR n i) Source #

Untyped: length is checked at runtime.

Instance details

Defined in Data.Array.Nested.Ranked.Shape

Associated Types

type Item (IxR n i) 
Instance details

Defined in Data.Array.Nested.Ranked.Shape

type Item (IxR n i) = i

Methods

fromList :: [Item (IxR n i)] -> IxR n i #

fromListN :: Int -> [Item (IxR n i)] -> IxR n i #

toList :: IxR n i -> [Item (IxR n i)] #

Show i => Show (IxR n i) Source # 
Instance details

Defined in Data.Array.Nested.Ranked.Shape

Methods

showsPrec :: Int -> IxR n i -> ShowS #

show :: IxR n i -> String #

showList :: [IxR n i] -> ShowS #

NFData i => NFData (IxR sh i) Source # 
Instance details

Defined in Data.Array.Nested.Ranked.Shape

Methods

rnf :: IxR sh i -> () #

Eq i => Eq (IxR n i) Source # 
Instance details

Defined in Data.Array.Nested.Ranked.Shape

Methods

(==) :: IxR n i -> IxR n i -> Bool #

(/=) :: IxR n i -> IxR n i -> Bool #

Ord i => Ord (IxR n i) Source # 
Instance details

Defined in Data.Array.Nested.Ranked.Shape

Methods

compare :: IxR n i -> IxR n i -> Ordering #

(<) :: IxR n i -> IxR n i -> Bool #

(<=) :: IxR n i -> IxR n i -> Bool #

(>) :: IxR n i -> IxR n i -> Bool #

(>=) :: IxR n i -> IxR n i -> Bool #

max :: IxR n i -> IxR n i -> IxR n i #

min :: IxR n i -> IxR n i -> IxR n i #

type Rep (IxR n i) Source # 
Instance details

Defined in Data.Array.Nested.Ranked.Shape

type Rep (IxR n i) = D1 ('MetaData "IxR" "Data.Array.Nested.Ranked.Shape" "ox-arrays-0.1.0.0-G9rS3ky7ORtC6G06Mvzq1I" 'True) (C1 ('MetaCons "IxR" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ListR n i))))
type Item (IxR n i) Source # 
Instance details

Defined in Data.Array.Nested.Ranked.Shape

type Item (IxR n i) = i

pattern ZIR :: () => n ~ 0 => IxR n i Source #

pattern (:.:) :: forall {n1} {i} n. () => (n + 1) ~ n1 => i -> IxR n i -> IxR n1 i infixr 3 Source #

type IIxR (n :: Nat) = IxR n Int Source #

ixrLength :: forall (sh :: Nat) i. IxR sh i -> Int Source #

ixrRank :: forall (n :: Nat) i. IxR n i -> SNat n Source #

ixrZero :: forall (n :: Nat). SNat n -> IIxR n Source #

ixrHead :: forall (n :: Natural) i. IxR (n + 1) i -> i Source #

ixrTail :: forall (n :: Natural) i. IxR (n + 1) i -> IxR n i Source #

ixrInit :: forall (n :: Natural) i. IxR (n + 1) i -> IxR n i Source #

ixrLast :: forall (n :: Natural) i. IxR (n + 1) i -> i Source #

ixrCast :: forall (n' :: Nat) (n :: Nat) i. SNat n' -> IxR n i -> IxR n' i Source #

Performs a runtime check that the lengths are identical.

ixrAppend :: forall (n :: Nat) (m :: Nat) i. IxR n i -> IxR m i -> IxR (n + m) i Source #

ixrZip :: forall (n :: Nat) i j. IxR n i -> IxR n j -> IxR n (i, j) Source #

ixrZipWith :: forall i j k (n :: Nat). (i -> j -> k) -> IxR n i -> IxR n j -> IxR n k Source #

ixrPermutePrefix :: forall (n :: Nat) i. [Int] -> IxR n i -> IxR n i Source #

Ranked shapes

newtype ShR (n :: Nat) i Source #

Constructors

ShR (ListR n i) 

Instances

Instances details
Foldable (ShR n) Source # 
Instance details

Defined in Data.Array.Nested.Ranked.Shape

Methods

fold :: Monoid m => ShR n m -> m #

foldMap :: Monoid m => (a -> m) -> ShR n a -> m #

foldMap' :: Monoid m => (a -> m) -> ShR n a -> m #

foldr :: (a -> b -> b) -> b -> ShR n a -> b #

foldr' :: (a -> b -> b) -> b -> ShR n a -> b #

foldl :: (b -> a -> b) -> b -> ShR n a -> b #

foldl' :: (b -> a -> b) -> b -> ShR n a -> b #

foldr1 :: (a -> a -> a) -> ShR n a -> a #

foldl1 :: (a -> a -> a) -> ShR n a -> a #

toList :: ShR n a -> [a] #

null :: ShR n a -> Bool #

length :: ShR n a -> Int #

elem :: Eq a => a -> ShR n a -> Bool #

maximum :: Ord a => ShR n a -> a #

minimum :: Ord a => ShR n a -> a #

sum :: Num a => ShR n a -> a #

product :: Num a => ShR n a -> a #

Functor (ShR n) Source # 
Instance details

Defined in Data.Array.Nested.Ranked.Shape

Methods

fmap :: (a -> b) -> ShR n a -> ShR n b #

(<$) :: a -> ShR n b -> ShR n a #

Generic (ShR n i) Source # 
Instance details

Defined in Data.Array.Nested.Ranked.Shape

Associated Types

type Rep (ShR n i) 
Instance details

Defined in Data.Array.Nested.Ranked.Shape

type Rep (ShR n i) = D1 ('MetaData "ShR" "Data.Array.Nested.Ranked.Shape" "ox-arrays-0.1.0.0-G9rS3ky7ORtC6G06Mvzq1I" 'True) (C1 ('MetaCons "ShR" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ListR n i))))

Methods

from :: ShR n i -> Rep (ShR n i) x #

to :: Rep (ShR n i) x -> ShR n i #

KnownNat n => IsList (ShR n i) Source #

Untyped: length is checked at runtime.

Instance details

Defined in Data.Array.Nested.Ranked.Shape

Associated Types

type Item (ShR n i) 
Instance details

Defined in Data.Array.Nested.Ranked.Shape

type Item (ShR n i) = i

Methods

fromList :: [Item (ShR n i)] -> ShR n i #

fromListN :: Int -> [Item (ShR n i)] -> ShR n i #

toList :: ShR n i -> [Item (ShR n i)] #

Show i => Show (ShR n i) Source # 
Instance details

Defined in Data.Array.Nested.Ranked.Shape

Methods

showsPrec :: Int -> ShR n i -> ShowS #

show :: ShR n i -> String #

showList :: [ShR n i] -> ShowS #

NFData i => NFData (ShR sh i) Source # 
Instance details

Defined in Data.Array.Nested.Ranked.Shape

Methods

rnf :: ShR sh i -> () #

Eq i => Eq (ShR n i) Source # 
Instance details

Defined in Data.Array.Nested.Ranked.Shape

Methods

(==) :: ShR n i -> ShR n i -> Bool #

(/=) :: ShR n i -> ShR n i -> Bool #

Ord i => Ord (ShR n i) Source # 
Instance details

Defined in Data.Array.Nested.Ranked.Shape

Methods

compare :: ShR n i -> ShR n i -> Ordering #

(<) :: ShR n i -> ShR n i -> Bool #

(<=) :: ShR n i -> ShR n i -> Bool #

(>) :: ShR n i -> ShR n i -> Bool #

(>=) :: ShR n i -> ShR n i -> Bool #

max :: ShR n i -> ShR n i -> ShR n i #

min :: ShR n i -> ShR n i -> ShR n i #

type Rep (ShR n i) Source # 
Instance details

Defined in Data.Array.Nested.Ranked.Shape

type Rep (ShR n i) = D1 ('MetaData "ShR" "Data.Array.Nested.Ranked.Shape" "ox-arrays-0.1.0.0-G9rS3ky7ORtC6G06Mvzq1I" 'True) (C1 ('MetaCons "ShR" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ListR n i))))
type Item (ShR n i) Source # 
Instance details

Defined in Data.Array.Nested.Ranked.Shape

type Item (ShR n i) = i

pattern ZSR :: () => n ~ 0 => ShR n i Source #

pattern (:$:) :: forall {n1} {i} n. () => (n + 1) ~ n1 => i -> ShR n i -> ShR n1 i infixr 3 Source #

type IShR (n :: Nat) = ShR n Int Source #

shrEqRank :: forall (n :: Nat) i (n' :: Nat). ShR n i -> ShR n' i -> Maybe (n :~: n') Source #

This checks only whether the ranks are equal, not whether the actual values are.

shrEqual :: forall i (n :: Nat) (n' :: Nat). Eq i => ShR n i -> ShR n' i -> Maybe (n :~: n') Source #

This compares the shapes for value equality.

shrLength :: forall (sh :: Nat) i. ShR sh i -> Int Source #

shrRank :: forall (n :: Nat) i. ShR n i -> SNat n Source #

This function can also be used to conjure up a KnownNat dictionary; pattern matching on the returned SNat with the 'pattern SNat' pattern synonym yields KnownNat evidence.

shrSize :: forall (n :: Nat). IShR n -> Int Source #

The number of elements in an array described by this shape.

shrHead :: forall (n :: Natural) i. ShR (n + 1) i -> i Source #

shrTail :: forall (n :: Natural) i. ShR (n + 1) i -> ShR n i Source #

shrInit :: forall (n :: Natural) i. ShR (n + 1) i -> ShR n i Source #

shrLast :: forall (n :: Natural) i. ShR (n + 1) i -> i Source #

shrCast :: forall (n' :: Nat) (n :: Nat) i. SNat n' -> ShR n i -> ShR n' i Source #

Performs a runtime check that the lengths are identical.

shrAppend :: forall (n :: Nat) (m :: Nat) i. ShR n i -> ShR m i -> ShR (n + m) i Source #

shrZip :: forall (n :: Nat) i j. ShR n i -> ShR n j -> ShR n (i, j) Source #

shrZipWith :: forall i j k (n :: Nat). (i -> j -> k) -> ShR n i -> ShR n j -> ShR n k Source #

shrPermutePrefix :: forall (n :: Nat) i. [Int] -> ShR n i -> ShR n i Source #

Internal helper functions

listrCastWithName :: forall (n' :: Nat) (n :: Nat) i. String -> SNat n' -> ListR n i -> ListR n' i Source #