array-list-0.2.0.0: IsList instances of Array for OverloadedLists extension

Copyright(c) Evgeny Poberezkin
LicenseMIT
Maintainerevgeny@poberezkin.com
Stabilityexperimental
Portabilitynon-portable
Safe HaskellNone
LanguageHaskell2010

Data.Array.IsList

Contents

Description

This package provides "orphan" IsList instances for Arrays with Integral indices up to 5 dimensions to allow initializing Arrays from [nested] lists using OverloadedLists GHC extension.

It also includes more generic arrayNestedList and toNestedList functions to convert between nested lists and Arrays with any indices.

Examples:

>>> ["one","two","three"] :: Array Int String
array (0,2) [(0,"one"),(1,"two"),(2,"three")]
>>> [[0,1,2], [10,11,12]] :: Array (Int, Int) Int
array ((0,0),(1,2)) [((0,0),0),((0,1),1),((0,2),2),((1,0),10),((1,1),11),((1,2),12)]

If any of the nested lists contains smaller number of elements than the first nested list in the same dimension, the array creation will fail.

>>> [[1,2],[3]] :: Array (Int, Int) Int
... Exception: (Array.!): undefined array element

Nested lists with larger number of elements will be truncated.

Synopsis

IsList

class IsList l #

The IsList class and its methods are intended to be used in conjunction with the OverloadedLists extension.

Since: base-4.7.0.0

Minimal complete definition

fromList, toList

Instances
IsList CallStack

Be aware that 'fromList . toList = id' only for unfrozen CallStacks, since toList removes frozenness information.

Since: base-4.9.0.0

Instance details

Defined in GHC.Exts

Associated Types

type Item CallStack :: Type #

IsList Version

Since: base-4.8.0.0

Instance details

Defined in GHC.Exts

Associated Types

type Item Version :: Type #

IsList [a]

Since: base-4.7.0.0

Instance details

Defined in GHC.Exts

Associated Types

type Item [a] :: Type #

Methods

fromList :: [Item [a]] -> [a] #

fromListN :: Int -> [Item [a]] -> [a] #

toList :: [a] -> [Item [a]] #

IsList (NonEmpty a)

Since: base-4.9.0.0

Instance details

Defined in GHC.Exts

Associated Types

type Item (NonEmpty a) :: Type #

Methods

fromList :: [Item (NonEmpty a)] -> NonEmpty a #

fromListN :: Int -> [Item (NonEmpty a)] -> NonEmpty a #

toList :: NonEmpty a -> [Item (NonEmpty a)] #

IsList (Array Int e) Source # 
Instance details

Defined in Data.Array.IsList

Associated Types

type Item (Array Int e) :: Type #

Methods

fromList :: [Item (Array Int e)] -> Array Int e #

fromListN :: Int -> [Item (Array Int e)] -> Array Int e #

toList :: Array Int e -> [Item (Array Int e)] #

IsList (Array Int8 e) Source # 
Instance details

Defined in Data.Array.IsList

Associated Types

type Item (Array Int8 e) :: Type #

Methods

fromList :: [Item (Array Int8 e)] -> Array Int8 e #

fromListN :: Int -> [Item (Array Int8 e)] -> Array Int8 e #

toList :: Array Int8 e -> [Item (Array Int8 e)] #

IsList (Array Int16 e) Source # 
Instance details

Defined in Data.Array.IsList

Associated Types

type Item (Array Int16 e) :: Type #

Methods

fromList :: [Item (Array Int16 e)] -> Array Int16 e #

fromListN :: Int -> [Item (Array Int16 e)] -> Array Int16 e #

toList :: Array Int16 e -> [Item (Array Int16 e)] #

IsList (Array Int32 e) Source # 
Instance details

Defined in Data.Array.IsList

Associated Types

type Item (Array Int32 e) :: Type #

Methods

fromList :: [Item (Array Int32 e)] -> Array Int32 e #

fromListN :: Int -> [Item (Array Int32 e)] -> Array Int32 e #

toList :: Array Int32 e -> [Item (Array Int32 e)] #

IsList (Array Int64 e) Source # 
Instance details

Defined in Data.Array.IsList

Associated Types

type Item (Array Int64 e) :: Type #

Methods

fromList :: [Item (Array Int64 e)] -> Array Int64 e #

fromListN :: Int -> [Item (Array Int64 e)] -> Array Int64 e #

toList :: Array Int64 e -> [Item (Array Int64 e)] #

IsList (Array Integer e) Source # 
Instance details

Defined in Data.Array.IsList

Associated Types

type Item (Array Integer e) :: Type #

IsList (Array Natural e) Source # 
Instance details

Defined in Data.Array.IsList

Associated Types

type Item (Array Natural e) :: Type #

IsList (Array Word e) Source # 
Instance details

Defined in Data.Array.IsList

Associated Types

type Item (Array Word e) :: Type #

Methods

fromList :: [Item (Array Word e)] -> Array Word e #

fromListN :: Int -> [Item (Array Word e)] -> Array Word e #

toList :: Array Word e -> [Item (Array Word e)] #

IsList (Array Word8 e) Source # 
Instance details

Defined in Data.Array.IsList

Associated Types

type Item (Array Word8 e) :: Type #

Methods

fromList :: [Item (Array Word8 e)] -> Array Word8 e #

fromListN :: Int -> [Item (Array Word8 e)] -> Array Word8 e #

toList :: Array Word8 e -> [Item (Array Word8 e)] #

IsList (Array Word16 e) Source # 
Instance details

Defined in Data.Array.IsList

Associated Types

type Item (Array Word16 e) :: Type #

IsList (Array Word32 e) Source # 
Instance details

Defined in Data.Array.IsList

Associated Types

type Item (Array Word32 e) :: Type #

IsList (Array Word64 e) Source # 
Instance details

Defined in Data.Array.IsList

Associated Types

type Item (Array Word64 e) :: Type #

(Integral i, Integral j, Ix i, Ix j) => IsList (Array (i, j) e) Source # 
Instance details

Defined in Data.Array.IsList

Associated Types

type Item (Array (i, j) e) :: Type #

Methods

fromList :: [Item (Array (i, j) e)] -> Array (i, j) e #

fromListN :: Int -> [Item (Array (i, j) e)] -> Array (i, j) e #

toList :: Array (i, j) e -> [Item (Array (i, j) e)] #

(Integral i, Integral j, Integral k, Ix i, Ix j, Ix k) => IsList (Array (i, j, k) e) Source # 
Instance details

Defined in Data.Array.IsList

Associated Types

type Item (Array (i, j, k) e) :: Type #

Methods

fromList :: [Item (Array (i, j, k) e)] -> Array (i, j, k) e #

fromListN :: Int -> [Item (Array (i, j, k) e)] -> Array (i, j, k) e #

toList :: Array (i, j, k) e -> [Item (Array (i, j, k) e)] #

(Integral i, Integral j, Integral k, Integral m, Ix i, Ix j, Ix k, Ix m) => IsList (Array (i, j, k, m) e) Source # 
Instance details

Defined in Data.Array.IsList

Associated Types

type Item (Array (i, j, k, m) e) :: Type #

Methods

fromList :: [Item (Array (i, j, k, m) e)] -> Array (i, j, k, m) e #

fromListN :: Int -> [Item (Array (i, j, k, m) e)] -> Array (i, j, k, m) e #

toList :: Array (i, j, k, m) e -> [Item (Array (i, j, k, m) e)] #

(Integral i, Integral j, Integral k, Integral m, Integral n, Ix i, Ix j, Ix k, Ix m, Ix n) => IsList (Array (i, j, k, m, n) e) Source # 
Instance details

Defined in Data.Array.IsList

Associated Types

type Item (Array (i, j, k, m, n) e) :: Type #

Methods

fromList :: [Item (Array (i, j, k, m, n) e)] -> Array (i, j, k, m, n) e #

fromListN :: Int -> [Item (Array (i, j, k, m, n) e)] -> Array (i, j, k, m, n) e #

toList :: Array (i, j, k, m, n) e -> [Item (Array (i, j, k, m, n) e)] #

fromList :: IsList l => [Item l] -> l #

The fromList function constructs the structure l from the given list of Item l

toList :: IsList l => l -> [Item l] #

The toList function extracts a list of Item l from the structure l. It should satisfy fromList . toList = id.

ArrayNestedList

class Ix i => ArrayNestedList i e Source #

ArrayNestedList class defines methods to convert between nested lists and multi-dimensional (up to 5) Arrays with any indices, not only Integral, using provided range of indices.

Minimal complete definition

arrayNestedList, toNestedList

Instances
(Ix i, Ix j) => ArrayNestedList (i, j) e Source # 
Instance details

Defined in Data.Array.IsList

Associated Types

type NestedList (i, j) e :: Type

Methods

arrayNestedList :: ((i, j), (i, j)) -> NestedList (i, j) e -> Array (i, j) e Source #

toNestedList :: Array (i, j) e -> NestedList (i, j) e Source #

(Ix i, Ix j, Ix k) => ArrayNestedList (i, j, k) e Source # 
Instance details

Defined in Data.Array.IsList

Associated Types

type NestedList (i, j, k) e :: Type

Methods

arrayNestedList :: ((i, j, k), (i, j, k)) -> NestedList (i, j, k) e -> Array (i, j, k) e Source #

toNestedList :: Array (i, j, k) e -> NestedList (i, j, k) e Source #

(Ix i, Ix j, Ix k, Ix m) => ArrayNestedList (i, j, k, m) e Source # 
Instance details

Defined in Data.Array.IsList

Associated Types

type NestedList (i, j, k, m) e :: Type

Methods

arrayNestedList :: ((i, j, k, m), (i, j, k, m)) -> NestedList (i, j, k, m) e -> Array (i, j, k, m) e Source #

toNestedList :: Array (i, j, k, m) e -> NestedList (i, j, k, m) e Source #

(Ix i, Ix j, Ix k, Ix m, Ix n) => ArrayNestedList (i, j, k, m, n) e Source # 
Instance details

Defined in Data.Array.IsList

Associated Types

type NestedList (i, j, k, m, n) e :: Type

Methods

arrayNestedList :: ((i, j, k, m, n), (i, j, k, m, n)) -> NestedList (i, j, k, m, n) e -> Array (i, j, k, m, n) e Source #

toNestedList :: Array (i, j, k, m, n) e -> NestedList (i, j, k, m, n) e Source #

arrayNestedList :: ArrayNestedList i e => (i, i) -> NestedList i e -> Array i e Source #

Converts nested list to multi-dimensional Array Similarly to arrayList function, it does not require to pass index for each element, only the range of indices.

toNestedList :: ArrayNestedList i e => Array i e -> NestedList i e Source #

Converts multi-dimensional Array to nested list.

Orphan instances

IsList (Array Int e) Source # 
Instance details

Associated Types

type Item (Array Int e) :: Type #

Methods

fromList :: [Item (Array Int e)] -> Array Int e #

fromListN :: Int -> [Item (Array Int e)] -> Array Int e #

toList :: Array Int e -> [Item (Array Int e)] #

IsList (Array Int8 e) Source # 
Instance details

Associated Types

type Item (Array Int8 e) :: Type #

Methods

fromList :: [Item (Array Int8 e)] -> Array Int8 e #

fromListN :: Int -> [Item (Array Int8 e)] -> Array Int8 e #

toList :: Array Int8 e -> [Item (Array Int8 e)] #

IsList (Array Int16 e) Source # 
Instance details

Associated Types

type Item (Array Int16 e) :: Type #

Methods

fromList :: [Item (Array Int16 e)] -> Array Int16 e #

fromListN :: Int -> [Item (Array Int16 e)] -> Array Int16 e #

toList :: Array Int16 e -> [Item (Array Int16 e)] #

IsList (Array Int32 e) Source # 
Instance details

Associated Types

type Item (Array Int32 e) :: Type #

Methods

fromList :: [Item (Array Int32 e)] -> Array Int32 e #

fromListN :: Int -> [Item (Array Int32 e)] -> Array Int32 e #

toList :: Array Int32 e -> [Item (Array Int32 e)] #

IsList (Array Int64 e) Source # 
Instance details

Associated Types

type Item (Array Int64 e) :: Type #

Methods

fromList :: [Item (Array Int64 e)] -> Array Int64 e #

fromListN :: Int -> [Item (Array Int64 e)] -> Array Int64 e #

toList :: Array Int64 e -> [Item (Array Int64 e)] #

IsList (Array Integer e) Source # 
Instance details

Associated Types

type Item (Array Integer e) :: Type #

IsList (Array Natural e) Source # 
Instance details

Associated Types

type Item (Array Natural e) :: Type #

IsList (Array Word e) Source # 
Instance details

Associated Types

type Item (Array Word e) :: Type #

Methods

fromList :: [Item (Array Word e)] -> Array Word e #

fromListN :: Int -> [Item (Array Word e)] -> Array Word e #

toList :: Array Word e -> [Item (Array Word e)] #

IsList (Array Word8 e) Source # 
Instance details

Associated Types

type Item (Array Word8 e) :: Type #

Methods

fromList :: [Item (Array Word8 e)] -> Array Word8 e #

fromListN :: Int -> [Item (Array Word8 e)] -> Array Word8 e #

toList :: Array Word8 e -> [Item (Array Word8 e)] #

IsList (Array Word16 e) Source # 
Instance details

Associated Types

type Item (Array Word16 e) :: Type #

IsList (Array Word32 e) Source # 
Instance details

Associated Types

type Item (Array Word32 e) :: Type #

IsList (Array Word64 e) Source # 
Instance details

Associated Types

type Item (Array Word64 e) :: Type #

(Integral i, Integral j, Ix i, Ix j) => IsList (Array (i, j) e) Source # 
Instance details

Associated Types

type Item (Array (i, j) e) :: Type #

Methods

fromList :: [Item (Array (i, j) e)] -> Array (i, j) e #

fromListN :: Int -> [Item (Array (i, j) e)] -> Array (i, j) e #

toList :: Array (i, j) e -> [Item (Array (i, j) e)] #

(Integral i, Integral j, Integral k, Ix i, Ix j, Ix k) => IsList (Array (i, j, k) e) Source # 
Instance details

Associated Types

type Item (Array (i, j, k) e) :: Type #

Methods

fromList :: [Item (Array (i, j, k) e)] -> Array (i, j, k) e #

fromListN :: Int -> [Item (Array (i, j, k) e)] -> Array (i, j, k) e #

toList :: Array (i, j, k) e -> [Item (Array (i, j, k) e)] #

(Integral i, Integral j, Integral k, Integral m, Ix i, Ix j, Ix k, Ix m) => IsList (Array (i, j, k, m) e) Source # 
Instance details

Associated Types

type Item (Array (i, j, k, m) e) :: Type #

Methods

fromList :: [Item (Array (i, j, k, m) e)] -> Array (i, j, k, m) e #

fromListN :: Int -> [Item (Array (i, j, k, m) e)] -> Array (i, j, k, m) e #

toList :: Array (i, j, k, m) e -> [Item (Array (i, j, k, m) e)] #

(Integral i, Integral j, Integral k, Integral m, Integral n, Ix i, Ix j, Ix k, Ix m, Ix n) => IsList (Array (i, j, k, m, n) e) Source # 
Instance details

Associated Types

type Item (Array (i, j, k, m, n) e) :: Type #

Methods

fromList :: [Item (Array (i, j, k, m, n) e)] -> Array (i, j, k, m, n) e #

fromListN :: Int -> [Item (Array (i, j, k, m, n) e)] -> Array (i, j, k, m, n) e #

toList :: Array (i, j, k, m, n) e -> [Item (Array (i, j, k, m, n) e)] #