Safe Haskell | Safe-Infered |
---|

Index types.

- 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

An index of dimension zero

Our index type, used for both shapes and indices.

!tail :. !head |

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 sh => Shape (:. sh Int) | |

Slice sl => Slice (:. sl All) | |

Slice sl => Slice (:. sl Int) |

# Common dimensions.

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`

.