ix-shapable-0.1.0: Reshape multi-dimensional arrays.
Safe HaskellNone
LanguageHaskell98

Data.Ix.Shapable

Synopsis

Documentation

class Shapable i where Source #

We need this type class to distinguish between different tuples of Ix. There are Shapable instances for homogenous Int tuples, but may Haddock doesn't see them.

Methods

sRank :: i -> Int Source #

sShape :: i -> i -> [Int] Source #

sBounds :: [Int] -> (i, i) Source #

Instances

Instances details
Shapable Int Source # 
Instance details

Defined in Data.Ix.Shapable

Methods

sRank :: Int -> Int Source #

sShape :: Int -> Int -> [Int] Source #

sBounds :: [Int] -> (Int, Int) Source #

Shapable (Int, Int) Source # 
Instance details

Defined in Data.Ix.Shapable

Methods

sRank :: (Int, Int) -> Int Source #

sShape :: (Int, Int) -> (Int, Int) -> [Int] Source #

sBounds :: [Int] -> ((Int, Int), (Int, Int)) Source #

Shapable (Int, Int, Int) Source # 
Instance details

Defined in Data.Ix.Shapable

Methods

sRank :: (Int, Int, Int) -> Int Source #

sShape :: (Int, Int, Int) -> (Int, Int, Int) -> [Int] Source #

sBounds :: [Int] -> ((Int, Int, Int), (Int, Int, Int)) Source #

Shapable (Int, Int, Int, Int) Source # 
Instance details

Defined in Data.Ix.Shapable

Methods

sRank :: (Int, Int, Int, Int) -> Int Source #

sShape :: (Int, Int, Int, Int) -> (Int, Int, Int, Int) -> [Int] Source #

sBounds :: [Int] -> ((Int, Int, Int, Int), (Int, Int, Int, Int)) Source #

Shapable (Int, Int, Int, Int, Int) Source # 
Instance details

Defined in Data.Ix.Shapable

Methods

sRank :: (Int, Int, Int, Int, Int) -> Int Source #

sShape :: (Int, Int, Int, Int, Int) -> (Int, Int, Int, Int, Int) -> [Int] Source #

sBounds :: [Int] -> ((Int, Int, Int, Int, Int), (Int, Int, Int, Int, Int)) Source #

Shapable (Int, Int, Int, Int, Int, Int) Source # 
Instance details

Defined in Data.Ix.Shapable

Methods

sRank :: (Int, Int, Int, Int, Int, Int) -> Int Source #

sShape :: (Int, Int, Int, Int, Int, Int) -> (Int, Int, Int, Int, Int, Int) -> [Int] Source #

sBounds :: [Int] -> ((Int, Int, Int, Int, Int, Int), (Int, Int, Int, Int, Int, Int)) Source #

Shapable (Int, Int, Int, Int, Int, Int, Int) Source # 
Instance details

Defined in Data.Ix.Shapable

Methods

sRank :: (Int, Int, Int, Int, Int, Int, Int) -> Int Source #

sShape :: (Int, Int, Int, Int, Int, Int, Int) -> (Int, Int, Int, Int, Int, Int, Int) -> [Int] Source #

sBounds :: [Int] -> ((Int, Int, Int, Int, Int, Int, Int), (Int, Int, Int, Int, Int, Int, Int)) Source #

Shapable (Int, Int, Int, Int, Int, Int, Int, Int) Source # 
Instance details

Defined in Data.Ix.Shapable

Methods

sRank :: (Int, Int, Int, Int, Int, Int, Int, Int) -> Int Source #

sShape :: (Int, Int, Int, Int, Int, Int, Int, Int) -> (Int, Int, Int, Int, Int, Int, Int, Int) -> [Int] Source #

sBounds :: [Int] -> ((Int, Int, Int, Int, Int, Int, Int, Int), (Int, Int, Int, Int, Int, Int, Int, Int)) Source #

Shapable (Int, Int, Int, Int, Int, Int, Int, Int, Int) Source # 
Instance details

Defined in Data.Ix.Shapable

Methods

sRank :: (Int, Int, Int, Int, Int, Int, Int, Int, Int) -> Int Source #

sShape :: (Int, Int, Int, Int, Int, Int, Int, Int, Int) -> (Int, Int, Int, Int, Int, Int, Int, Int, Int) -> [Int] Source #

sBounds :: [Int] -> ((Int, Int, Int, Int, Int, Int, Int, Int, Int), (Int, Int, Int, Int, Int, Int, Int, Int, Int)) Source #

rank :: (Shapable i, Ix i, IArray a e) => a i e -> Int Source #

Determine the rank of an array.

shape :: (Shapable i, Ix i, IArray a e) => a i e -> [Int] Source #

Canonical representation of the shape. The following properties hold: 'length . shape = rank' 'product . shape = size'

shapeToStride :: [Int] -> [Int] Source #

How much the offset changes when you move one element in the given direction. Since arrays are in row-major order, 'last . shapeToStride = const 1'

size :: (Ix i, IArray a e) => a i e -> Int Source #

Number of elements in the Array.