ix-shapable-0.1.0: Reshape multi-dimensional arrays.

Safe HaskellNone
LanguageHaskell98

Data.Ix.Shapable

Synopsis

Documentation

class Shapable i where #

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.

Minimal complete definition

sRank, sShape, sBounds

Methods

sRank :: i -> Int #

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

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

Instances

Shapable Int # 

Methods

sRank :: Int -> Int #

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

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

Shapable (Int, Int) # 

Methods

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

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

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

Shapable (Int, Int, Int) # 

Methods

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

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

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

Shapable (Int, Int, Int, Int) # 

Methods

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

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

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

Shapable (Int, Int, Int, Int, Int) # 

Methods

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

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

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

Shapable (Int, Int, Int, Int, Int, Int) # 

Methods

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

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

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

Shapable (Int, Int, Int, Int, Int, Int, Int) # 

Methods

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

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

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

Shapable (Int, Int, Int, Int, Int, Int, Int, Int) # 

Methods

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

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

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

Shapable (Int, Int, Int, Int, Int, Int, Int, Int, Int) # 

Methods

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

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

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

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

Determine the rank of an array.

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

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

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

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 #

Number of elements in the Array.