base-4.15.1.0: Basic libraries
Copyright (c) The University of Glasgow 1994-2000 see libraries/base/LICENSE cvs-ghc@haskell.org internal non-portable (GHC extensions) Safe-Inferred Haskell2010

GHC.Ix

Description

GHC's Ix typeclass implementation.

Synopsis

# Documentation

class Ord a => Ix a where Source #

The Ix class is used to map a contiguous subrange of values in a type onto integers. It is used primarily for array indexing (see the array package).

The first argument (l,u) of each of these operations is a pair specifying the lower and upper bounds of a contiguous subrange of values.

An implementation is entitled to assume the following laws about these operations:

• inRange (l,u) i == elem i (range (l,u)) 
• range (l,u) !! index (l,u) i == i, when inRange (l,u) i
• map (index (l,u)) (range (l,u))) == [0..rangeSize (l,u)-1] 
• rangeSize (l,u) == length (range (l,u)) 

Minimal complete definition

Methods

range :: (a, a) -> [a] Source #

The list of values in the subrange defined by a bounding pair.

index :: (a, a) -> a -> Int Source #

The position of a subscript in the subrange.

unsafeIndex :: (a, a) -> a -> Int Source #

Like index, but without checking that the value is in range.

inRange :: (a, a) -> a -> Bool Source #

Returns True the given subscript lies in the range defined the bounding pair.

rangeSize :: (a, a) -> Int Source #

The size of the subrange defined by a bounding pair.

unsafeRangeSize :: (a, a) -> Int Source #

like rangeSize, but without checking that the upper bound is in range.

#### Instances

Instances details