| Portability | non-portable |
|---|---|
| Stability | experimental |
| Maintainer | Nicola Squartini <tensor5@gmail.com> |
| Safe Haskell | Safe-Inferred |
Data.TypeList.MultiIndex
Description
We define the a multidimensional array of indices called . The
canonical implementation of a MultiIndex is an heterogeneous list of
MultiIndexs. Below we illustrate some example of Ordinal types and
the elements they contain.
MultiIndex
=
{(1,1),(1,2),(2,1),(2,2),(3,1),(3,2)}
Three :|: (Two :|: Nil)
=
{(1,1,1),(1,1,2),(1,2,1),(1,2,2),(2,1,1),(2,1,2),(2,2,1),(2,2,2),(3,1,1),(3,1,2),(3,2,1),(3,2,2)}
Three :|: (Two :|: (Two :|: Nil))
- data Nil = Nil
- data a :|: b = a :|: b
- module Data.Ordinal
- module Data.TypeList
- class (Dimensions i, TypeList i) => MultiIndex i where
- fromMultiIndex :: Num n => i -> [n]
- toMultiIndex :: (Eq n, Num n) => [n] -> i
- multiIndex2Linear :: (MultiIndex i, Num n) => i -> n
- class Dimensions i where
- dimensions :: Num n => i -> [n]
- class (Cardinal n, MultiIndex is, MultiIndex js) => MultiIndexConcat n is js where
- type Concat n is js
Documentation
Constructors
| Nil |
Instances
| Bounded Nil | |
| Eq Nil | |
| Show Nil | |
| Generic Nil | |
| Cardinality Nil | |
| Random Nil | |
| ReverseList Nil | |
| TypeList Nil | |
| Dimensions Nil | |
| MultiIndex Nil | |
| Extend Nil l' | |
| TypeList l => TailRevList Nil l | |
| DropList Zero Nil | |
| TakeList Zero Nil | |
| TypeList l => AppendList Nil l | |
| (Ordinal i, Ordinal j) => Matrix i j (Tensor (:|: i (:|: j Nil)) e) | |
| Functor (Tensor Nil) | |
| Applicative (Tensor Nil) | |
| FromList (Tensor Nil) | |
| (Ordinal i, Sum i i) => SquareMatrix (Tensor (:|: i (:|: i Nil))) | |
| Eq e => Eq (Tensor Nil e) | |
| Show e => Show (Tensor Nil e) | |
| (Ordinal i, Ordinal j) => Transpose (Tensor (:|: i (:|: j Nil)) e) | |
| Tensor (Tensor Nil e) | |
| Dimensions (Tensor Nil e) | |
| (Eq e, Fractional e, Ordinal i, Ordinal j) => LinearSystem (Tensor (:|: i (:|: j Nil)) e) (Tensor (:|: i Nil) e) | |
| (Eq e, Fractional e, Ordinal i, Ordinal j, Ordinal k, Sum j k) => LinearSystem (Tensor (:|: i (:|: j Nil)) e) (Tensor (:|: i (:|: k Nil)) e) |
This is the constructor for heterogeneous lists, equivalent to
for standard lists. : is used to end the lists, just
like Nil'[]'.
Constructors
| a :|: b |
Instances
module Data.Ordinal
module Data.TypeList
class (Dimensions i, TypeList i) => MultiIndex i whereSource
Instances
| MultiIndex Nil | |
| (Ordinal i, MultiIndex is) => MultiIndex (:|: i is) |
multiIndex2Linear :: (MultiIndex i, Num n) => i -> nSource
class Dimensions i whereSource
Class for types having multiple dimensions, like es
or MultiIndexs.
Tensor
Methods
dimensions :: Num n => i -> [n]Source
Returns the dimensions list. It should always be independent
on its argument and work on .
undefined
Instances
| Dimensions Nil | |
| (Ordinal i, Dimensions is) => Dimensions (:|: i is) | |
| Dimensions (Tensor (:|: n is) e) => Dimensions (Tensor (:|: (Succ n) is) e) | |
| Dimensions (Tensor is e) => Dimensions (Tensor (:|: One is) e) | |
| Dimensions (Tensor Nil e) | |
| Dimensions i => Dimensions (Tensor i e) |
class (Cardinal n, MultiIndex is, MultiIndex js) => MultiIndexConcat n is js Source
Instances
| (Ordinal i1, Ordinal i2, Sum i1 i2, MultiIndex is) => MultiIndexConcat Zero (:|: i1 is) (:|: i2 is) | |
| (Cardinal n, Ordinal i, MultiIndex js, MultiIndex ks, MultiIndexConcat n js ks) => MultiIndexConcat (Succ n) (:|: i js) (:|: i ks) |