repa-3.2.3.3: High performance, regular, shape polymorphic parallel arrays.

Safe Haskell | None

Data.Array.Repa.Index

Contents

- Index types
- Common dimensions.

Description

Index types.

Synopsis

- data Z = Z
- data tail :. head = !tail :. !head
- type DIM0 = Z
- type DIM1 = DIM0 :. Int
- type DIM2 = DIM1 :. Int
- type DIM3 = DIM2 :. Int
- type DIM4 = DIM3 :. Int
- type DIM5 = DIM4 :. Int
- ix1 :: Int -> DIM1
- ix2 :: Int -> Int -> DIM2
- ix3 :: Int -> Int -> Int -> DIM3
- ix4 :: Int -> Int -> Int -> Int -> DIM4
- ix5 :: Int -> Int -> Int -> Int -> Int -> DIM5

# Index types

data Z Source

An index of dimension zero

Constructors

Z |

Instances

Eq Z |
Ord Z |
Read Z |
Show Z |
Arbitrary Z | This module exports instances of `Arbitrary` and `CoArbitrary` for unboxed Repa arrays.
CoArbitrary Z |
Shape Z |
Slice Z |
Elt e => LoadRange D DIM2 e | Compute a range of elements in a rank-2 array.
Elt e => LoadRange C DIM2 e | Compute a range of elements in a rank-2 array.
Elt e => Load C DIM2 e | Compute all elements in an rank-2 array.

data tail :. head Source

Our index type, used for both shapes and indices.

Constructors

!tail :. !head |

Instances

Elt e => LoadRange D DIM2 e | Compute a range of elements in a rank-2 array.
Elt e => LoadRange C DIM2 e | Compute a range of elements in a rank-2 array.
Elt e => Load C DIM2 e | Compute all elements in an rank-2 array.
(Eq tail, Eq head) => Eq (:. tail head) |
(Ord tail, Ord head) => Ord (:. tail head) |
(Read tail, Read head) => Read (:. tail head) |
(Show tail, Show head) => Show (:. tail head) |
(Shape a, Arbitrary a) => Arbitrary (:. a Int) |
(Shape a, CoArbitrary a) => CoArbitrary (:. a Int) |
Shape sh => Shape (:. sh Int) |
Slice sl => Slice (:. sl All) |
Slice sl => Slice (:. sl Int) |

# Common dimensions.

type DIM0 = Z Source

type DIM1 = DIM0 :. Int Source

type DIM2 = DIM1 :. Int Source

type DIM3 = DIM2 :. Int Source

type DIM4 = DIM3 :. Int Source

type DIM5 = DIM4 :. Int Source

ix1 :: Int -> DIM1 Source

Helper for index construction.

Use this instead of explicit constructors like `(Z :. (x :: Int))`. The this is sometimes needed to ensure that `x` is constrained to be in `Int`.

ix2 :: Int -> Int -> DIM2 Source

ix3 :: Int -> Int -> Int -> DIM3 Source

ix4 :: Int -> Int -> Int -> Int -> DIM4 Source

ix5 :: Int -> Int -> Int -> Int -> Int -> DIM5 Source