Data.Array.IO

array-0.3.0.2: Mutable and immutable arrays

Portability | non-portable (uses Data.Array.MArray)
Stability | experimental
Maintainer | libraries@haskell.org

Data.Array.IO

Contents

- `IO` arrays with boxed elements
- `IO` arrays with unboxed elements
- Overloaded mutable array interface
- Doing I/O with `IOUArray`s

Description

Mutable boxed and unboxed arrays in the IO monad.

Synopsis

- data IOArray i e
- data IOUArray i e
- castIOUArray :: IOUArray ix a -> IO (IOUArray ix b)
- module Data.Array.MArray
- hGetArray :: Handle -> IOUArray Int Word8 -> Int -> IO Int
- hPutArray :: Handle -> IOUArray Int Word8 -> Int -> IO ()

# `IO` arrays with boxed elements

data IOArray i e Source

An `IOArray` is a mutable, boxed, non-strict array in the `IO` monad. The type arguments are as follows:

- `i`: the index type of the array (should be an instance of `Ix`)
- `e`: the element type of the array.

Instances

Typeable2 IOArray |
MArray IOArray e IO |
Eq (IOArray i e) |

# `IO` arrays with unboxed elements

data IOUArray i e

Mutable, unboxed, strict arrays in the `IO` monad. The type arguments are as follows:

- `i`: the index type of the array (should be an instance of `Ix`)
- `e`: the element type of the array. Only certain element types are supported: see Data.Array.MArray for a list of instances.

Instances

Typeable2 IOUArray |
MArray IOUArray Bool IO |
MArray IOUArray Char IO |
MArray IOUArray Double IO |
MArray IOUArray Float IO |
MArray IOUArray Int IO |
MArray IOUArray Int8 IO |
MArray IOUArray Int16 IO |
MArray IOUArray Int32 IO |
MArray IOUArray Int64 IO |
MArray IOUArray Word IO |
MArray IOUArray Word8 IO |
MArray IOUArray Word16 IO |
MArray IOUArray Word32 IO |
MArray IOUArray Word64 IO |
MArray IOUArray (StablePtr a) IO |
MArray IOUArray (Ptr a) IO |
MArray IOUArray (FunPtr a) IO |
Eq (IOUArray i e) |

castIOUArray :: IOUArray ix a -> IO (IOUArray ix b)

Casts an `IOUArray` with one element type into one with a different element type. All the elements of the resulting array are undefined (unless you know what you're doing...).

# Overloaded mutable array interface

module Data.Array.MArray

# Doing I/O with `IOUArray`s

hGetArray

Arguments

:: Handle | Handle to read from
-> IOUArray Int Word8 | Array in which to place the values
-> Int | Number of `Word8`s to read
-> IO Int | Returns: the number of `Word8`s actually read, which might be smaller than the number requested if the end of file was reached.

Reads a number of `Word8`s from the specified `Handle` directly into an array.

hPutArray

Arguments

:: Handle | Handle to write to
-> IOUArray Int Word8 | Array to write from
-> Int | Number of `Word8`s to write
-> IO () |

Writes an array of `Word8` to the specified `Handle`.