yarr-1.4.0.2: Yet another array library

Safe HaskellNone
LanguageHaskell98

Data.Yarr.Repr.Delayed

Contents

Synopsis

Delayed source

data D Source #

Delayed representation is a wrapper for arbitrary indexing function.

UArray D L sh a instance holds linear getter ((Int -> IO a)), and UArray D SH sh a - shaped, "true" (sh -> IO a) index, respectively.

Delayed arrays are most common recipients for fusion operations.

Instances

Shape sh => USource D SH sh a Source # 

Methods

index :: UArray D SH sh a -> sh -> IO a Source #

linearIndex :: UArray D SH sh a -> Int -> IO a Source #

Shape sh => USource D L sh a Source # 

Methods

index :: UArray D L sh a -> sh -> IO a Source #

linearIndex :: UArray D L sh a -> Int -> IO a Source #

Shape sh => Regular D SH sh a Source # 

Associated Types

data UArray D SH sh a :: * Source #

Methods

extent :: UArray D SH sh a -> sh Source #

touchArray :: UArray D SH sh a -> IO () Source #

force :: UArray D SH sh a -> IO () Source #

Shape sh => Regular D L sh a Source # 

Associated Types

data UArray D L sh a :: * Source #

Methods

extent :: UArray D L sh a -> sh Source #

touchArray :: UArray D L sh a -> IO () Source #

force :: UArray D L sh a -> IO () Source #

Shape sh => DefaultFusion D D SH sh Source # 

Methods

dmap :: (USource D SH sh a, USource D SH sh b) => (a -> b) -> UArray D SH sh a -> UArray D SH sh b Source #

dmapM :: (USource D SH sh a, USource D SH sh b) => (a -> IO b) -> UArray D SH sh a -> UArray D SH sh b Source #

dzip2 :: (USource D SH sh a, USource D SH sh b, USource D SH sh c) => (a -> b -> c) -> UArray D SH sh a -> UArray D SH sh b -> UArray D SH sh c Source #

dzip2M :: (USource D SH sh a, USource D SH sh b, USource D SH sh c) => (a -> b -> IO c) -> UArray D SH sh a -> UArray D SH sh b -> UArray D SH sh c Source #

dzip3 :: (USource D SH sh a, USource D SH sh b, USource D SH sh c, USource D SH sh d) => (a -> b -> c -> d) -> UArray D SH sh a -> UArray D SH sh b -> UArray D SH sh c -> UArray D SH sh d Source #

dzip3M :: (USource D SH sh a, USource D SH sh b, USource D SH sh c, USource D SH sh d) => (a -> b -> c -> IO d) -> UArray D SH sh a -> UArray D SH sh b -> UArray D SH sh c -> UArray D SH sh d Source #

dzip :: (USource D SH sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => Fun n a b -> VecList n (UArray D SH sh a) -> UArray D SH sh b Source #

dzipM :: (USource D SH sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => Fun n a (IO b) -> VecList n (UArray D SH sh a) -> UArray D SH sh b Source #

DefaultFusion D D L sh Source # 

Methods

dmap :: (USource D L sh a, USource D L sh b) => (a -> b) -> UArray D L sh a -> UArray D L sh b Source #

dmapM :: (USource D L sh a, USource D L sh b) => (a -> IO b) -> UArray D L sh a -> UArray D L sh b Source #

dzip2 :: (USource D L sh a, USource D L sh b, USource D L sh c) => (a -> b -> c) -> UArray D L sh a -> UArray D L sh b -> UArray D L sh c Source #

dzip2M :: (USource D L sh a, USource D L sh b, USource D L sh c) => (a -> b -> IO c) -> UArray D L sh a -> UArray D L sh b -> UArray D L sh c Source #

dzip3 :: (USource D L sh a, USource D L sh b, USource D L sh c, USource D L sh d) => (a -> b -> c -> d) -> UArray D L sh a -> UArray D L sh b -> UArray D L sh c -> UArray D L sh d Source #

dzip3M :: (USource D L sh a, USource D L sh b, USource D L sh c, USource D L sh d) => (a -> b -> c -> IO d) -> UArray D L sh a -> UArray D L sh b -> UArray D L sh c -> UArray D L sh d Source #

dzip :: (USource D L sh a, USource D L sh b, Arity n, (* ~ n) (S n0)) => Fun n a b -> VecList n (UArray D L sh a) -> UArray D L sh b Source #

dzipM :: (USource D L sh a, USource D L sh b, Arity n, (* ~ n) (S n0)) => Fun n a (IO b) -> VecList n (UArray D L sh a) -> UArray D L sh b Source #

DefaultFusion FS D L sh Source # 

Methods

dmap :: (USource FS L sh a, USource D L sh b) => (a -> b) -> UArray FS L sh a -> UArray D L sh b Source #

dmapM :: (USource FS L sh a, USource D L sh b) => (a -> IO b) -> UArray FS L sh a -> UArray D L sh b Source #

dzip2 :: (USource FS L sh a, USource FS L sh b, USource D L sh c) => (a -> b -> c) -> UArray FS L sh a -> UArray FS L sh b -> UArray D L sh c Source #

dzip2M :: (USource FS L sh a, USource FS L sh b, USource D L sh c) => (a -> b -> IO c) -> UArray FS L sh a -> UArray FS L sh b -> UArray D L sh c Source #

dzip3 :: (USource FS L sh a, USource FS L sh b, USource FS L sh c, USource D L sh d) => (a -> b -> c -> d) -> UArray FS L sh a -> UArray FS L sh b -> UArray FS L sh c -> UArray D L sh d Source #

dzip3M :: (USource FS L sh a, USource FS L sh b, USource FS L sh c, USource D L sh d) => (a -> b -> c -> IO d) -> UArray FS L sh a -> UArray FS L sh b -> UArray FS L sh c -> UArray D L sh d Source #

dzip :: (USource FS L sh a, USource D L sh b, Arity n, (* ~ n) (S n0)) => Fun n a b -> VecList n (UArray FS L sh a) -> UArray D L sh b Source #

dzipM :: (USource FS L sh a, USource D L sh b, Arity n, (* ~ n) (S n0)) => Fun n a (IO b) -> VecList n (UArray FS L sh a) -> UArray D L sh b Source #

DefaultFusion F D L sh Source # 

Methods

dmap :: (USource F L sh a, USource D L sh b) => (a -> b) -> UArray F L sh a -> UArray D L sh b Source #

dmapM :: (USource F L sh a, USource D L sh b) => (a -> IO b) -> UArray F L sh a -> UArray D L sh b Source #

dzip2 :: (USource F L sh a, USource F L sh b, USource D L sh c) => (a -> b -> c) -> UArray F L sh a -> UArray F L sh b -> UArray D L sh c Source #

dzip2M :: (USource F L sh a, USource F L sh b, USource D L sh c) => (a -> b -> IO c) -> UArray F L sh a -> UArray F L sh b -> UArray D L sh c Source #

dzip3 :: (USource F L sh a, USource F L sh b, USource F L sh c, USource D L sh d) => (a -> b -> c -> d) -> UArray F L sh a -> UArray F L sh b -> UArray F L sh c -> UArray D L sh d Source #

dzip3M :: (USource F L sh a, USource F L sh b, USource F L sh c, USource D L sh d) => (a -> b -> c -> IO d) -> UArray F L sh a -> UArray F L sh b -> UArray F L sh c -> UArray D L sh d Source #

dzip :: (USource F L sh a, USource D L sh b, Arity n, (* ~ n) (S n0)) => Fun n a b -> VecList n (UArray F L sh a) -> UArray D L sh b Source #

dzipM :: (USource F L sh a, USource D L sh b, Arity n, (* ~ n) (S n0)) => Fun n a (IO b) -> VecList n (UArray F L sh a) -> UArray D L sh b Source #

DefaultFusion MB D L sh Source # 

Methods

dmap :: (USource MB L sh a, USource D L sh b) => (a -> b) -> UArray MB L sh a -> UArray D L sh b Source #

dmapM :: (USource MB L sh a, USource D L sh b) => (a -> IO b) -> UArray MB L sh a -> UArray D L sh b Source #

dzip2 :: (USource MB L sh a, USource MB L sh b, USource D L sh c) => (a -> b -> c) -> UArray MB L sh a -> UArray MB L sh b -> UArray D L sh c Source #

dzip2M :: (USource MB L sh a, USource MB L sh b, USource D L sh c) => (a -> b -> IO c) -> UArray MB L sh a -> UArray MB L sh b -> UArray D L sh c Source #

dzip3 :: (USource MB L sh a, USource MB L sh b, USource MB L sh c, USource D L sh d) => (a -> b -> c -> d) -> UArray MB L sh a -> UArray MB L sh b -> UArray MB L sh c -> UArray D L sh d Source #

dzip3M :: (USource MB L sh a, USource MB L sh b, USource MB L sh c, USource D L sh d) => (a -> b -> c -> IO d) -> UArray MB L sh a -> UArray MB L sh b -> UArray MB L sh c -> UArray D L sh d Source #

dzip :: (USource MB L sh a, USource D L sh b, Arity n, (* ~ n) (S n0)) => Fun n a b -> VecList n (UArray MB L sh a) -> UArray D L sh b Source #

dzipM :: (USource MB L sh a, USource D L sh b, Arity n, (* ~ n) (S n0)) => Fun n a (IO b) -> VecList n (UArray MB L sh a) -> UArray D L sh b Source #

DefaultFusion B D L sh Source # 

Methods

dmap :: (USource B L sh a, USource D L sh b) => (a -> b) -> UArray B L sh a -> UArray D L sh b Source #

dmapM :: (USource B L sh a, USource D L sh b) => (a -> IO b) -> UArray B L sh a -> UArray D L sh b Source #

dzip2 :: (USource B L sh a, USource B L sh b, USource D L sh c) => (a -> b -> c) -> UArray B L sh a -> UArray B L sh b -> UArray D L sh c Source #

dzip2M :: (USource B L sh a, USource B L sh b, USource D L sh c) => (a -> b -> IO c) -> UArray B L sh a -> UArray B L sh b -> UArray D L sh c Source #

dzip3 :: (USource B L sh a, USource B L sh b, USource B L sh c, USource D L sh d) => (a -> b -> c -> d) -> UArray B L sh a -> UArray B L sh b -> UArray B L sh c -> UArray D L sh d Source #

dzip3M :: (USource B L sh a, USource B L sh b, USource B L sh c, USource D L sh d) => (a -> b -> c -> IO d) -> UArray B L sh a -> UArray B L sh b -> UArray B L sh c -> UArray D L sh d Source #

dzip :: (USource B L sh a, USource D L sh b, Arity n, (* ~ n) (S n0)) => Fun n a b -> VecList n (UArray B L sh a) -> UArray D L sh b Source #

dzipM :: (USource B L sh a, USource D L sh b, Arity n, (* ~ n) (S n0)) => Fun n a (IO b) -> VecList n (UArray B L sh a) -> UArray D L sh b Source #

Fusion r D L sh Source # 

Methods

fmap :: (USource r L sh a, USource D L sh b) => (a -> b) -> UArray r L sh a -> UArray D L sh b Source #

fmapM :: (USource r L sh a, USource D L sh b) => (a -> IO b) -> UArray r L sh a -> UArray D L sh b Source #

fzip2 :: (USource r L sh a, USource r L sh b, USource D L sh c) => (a -> b -> c) -> UArray r L sh a -> UArray r L sh b -> UArray D L sh c Source #

fzip2M :: (USource r L sh a, USource r L sh b, USource D L sh c) => (a -> b -> IO c) -> UArray r L sh a -> UArray r L sh b -> UArray D L sh c Source #

fzip3 :: (USource r L sh a, USource r L sh b, USource r L sh c, USource D L sh d) => (a -> b -> c -> d) -> UArray r L sh a -> UArray r L sh b -> UArray r L sh c -> UArray D L sh d Source #

fzip3M :: (USource r L sh a, USource r L sh b, USource r L sh c, USource D L sh d) => (a -> b -> c -> IO d) -> UArray r L sh a -> UArray r L sh b -> UArray r L sh c -> UArray D L sh d Source #

fzip :: (USource r L sh a, USource D L sh b, Arity n, (* ~ n) (S n0)) => Fun n a b -> VecList n (UArray r L sh a) -> UArray D L sh b Source #

fzipM :: (USource r L sh a, USource D L sh b, Arity n, (* ~ n) (S n0)) => Fun n a (IO b) -> VecList n (UArray r L sh a) -> UArray D L sh b Source #

Shape sh => DefaultIFusion D SH D SH sh Source # 

Methods

imap :: (USource D SH sh a, USource D SH sh b) => (sh -> a -> b) -> UArray D SH sh a -> UArray D SH sh b Source #

imapM :: (USource D SH sh a, USource D SH sh b) => (sh -> a -> IO b) -> UArray D SH sh a -> UArray D SH sh b Source #

izip2 :: (USource D SH sh a, USource D SH sh b, USource D SH sh c) => (sh -> a -> b -> c) -> UArray D SH sh a -> UArray D SH sh b -> UArray D SH sh c Source #

izip2M :: (USource D SH sh a, USource D SH sh b, USource D SH sh c) => (sh -> a -> b -> IO c) -> UArray D SH sh a -> UArray D SH sh b -> UArray D SH sh c Source #

izip3 :: (USource D SH sh a, USource D SH sh b, USource D SH sh c, USource D SH sh d) => (sh -> a -> b -> c -> d) -> UArray D SH sh a -> UArray D SH sh b -> UArray D SH sh c -> UArray D SH sh d Source #

izip3M :: (USource D SH sh a, USource D SH sh b, USource D SH sh c, USource D SH sh d) => (sh -> a -> b -> c -> IO d) -> UArray D SH sh a -> UArray D SH sh b -> UArray D SH sh c -> UArray D SH sh d Source #

izip :: (USource D SH sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a b) -> VecList n (UArray D SH sh a) -> UArray D SH sh b Source #

izipM :: (USource D SH sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a (IO b)) -> VecList n (UArray D SH sh a) -> UArray D SH sh b Source #

Shape sh => DefaultIFusion D L D SH sh Source # 

Methods

imap :: (USource D L sh a, USource D SH sh b) => (sh -> a -> b) -> UArray D L sh a -> UArray D SH sh b Source #

imapM :: (USource D L sh a, USource D SH sh b) => (sh -> a -> IO b) -> UArray D L sh a -> UArray D SH sh b Source #

izip2 :: (USource D L sh a, USource D L sh b, USource D SH sh c) => (sh -> a -> b -> c) -> UArray D L sh a -> UArray D L sh b -> UArray D SH sh c Source #

izip2M :: (USource D L sh a, USource D L sh b, USource D SH sh c) => (sh -> a -> b -> IO c) -> UArray D L sh a -> UArray D L sh b -> UArray D SH sh c Source #

izip3 :: (USource D L sh a, USource D L sh b, USource D L sh c, USource D SH sh d) => (sh -> a -> b -> c -> d) -> UArray D L sh a -> UArray D L sh b -> UArray D L sh c -> UArray D SH sh d Source #

izip3M :: (USource D L sh a, USource D L sh b, USource D L sh c, USource D SH sh d) => (sh -> a -> b -> c -> IO d) -> UArray D L sh a -> UArray D L sh b -> UArray D L sh c -> UArray D SH sh d Source #

izip :: (USource D L sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a b) -> VecList n (UArray D L sh a) -> UArray D SH sh b Source #

izipM :: (USource D L sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a (IO b)) -> VecList n (UArray D L sh a) -> UArray D SH sh b Source #

Shape sh => DefaultIFusion FS L D SH sh Source # 

Methods

imap :: (USource FS L sh a, USource D SH sh b) => (sh -> a -> b) -> UArray FS L sh a -> UArray D SH sh b Source #

imapM :: (USource FS L sh a, USource D SH sh b) => (sh -> a -> IO b) -> UArray FS L sh a -> UArray D SH sh b Source #

izip2 :: (USource FS L sh a, USource FS L sh b, USource D SH sh c) => (sh -> a -> b -> c) -> UArray FS L sh a -> UArray FS L sh b -> UArray D SH sh c Source #

izip2M :: (USource FS L sh a, USource FS L sh b, USource D SH sh c) => (sh -> a -> b -> IO c) -> UArray FS L sh a -> UArray FS L sh b -> UArray D SH sh c Source #

izip3 :: (USource FS L sh a, USource FS L sh b, USource FS L sh c, USource D SH sh d) => (sh -> a -> b -> c -> d) -> UArray FS L sh a -> UArray FS L sh b -> UArray FS L sh c -> UArray D SH sh d Source #

izip3M :: (USource FS L sh a, USource FS L sh b, USource FS L sh c, USource D SH sh d) => (sh -> a -> b -> c -> IO d) -> UArray FS L sh a -> UArray FS L sh b -> UArray FS L sh c -> UArray D SH sh d Source #

izip :: (USource FS L sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a b) -> VecList n (UArray FS L sh a) -> UArray D SH sh b Source #

izipM :: (USource FS L sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a (IO b)) -> VecList n (UArray FS L sh a) -> UArray D SH sh b Source #

Shape sh => DefaultIFusion F L D SH sh Source # 

Methods

imap :: (USource F L sh a, USource D SH sh b) => (sh -> a -> b) -> UArray F L sh a -> UArray D SH sh b Source #

imapM :: (USource F L sh a, USource D SH sh b) => (sh -> a -> IO b) -> UArray F L sh a -> UArray D SH sh b Source #

izip2 :: (USource F L sh a, USource F L sh b, USource D SH sh c) => (sh -> a -> b -> c) -> UArray F L sh a -> UArray F L sh b -> UArray D SH sh c Source #

izip2M :: (USource F L sh a, USource F L sh b, USource D SH sh c) => (sh -> a -> b -> IO c) -> UArray F L sh a -> UArray F L sh b -> UArray D SH sh c Source #

izip3 :: (USource F L sh a, USource F L sh b, USource F L sh c, USource D SH sh d) => (sh -> a -> b -> c -> d) -> UArray F L sh a -> UArray F L sh b -> UArray F L sh c -> UArray D SH sh d Source #

izip3M :: (USource F L sh a, USource F L sh b, USource F L sh c, USource D SH sh d) => (sh -> a -> b -> c -> IO d) -> UArray F L sh a -> UArray F L sh b -> UArray F L sh c -> UArray D SH sh d Source #

izip :: (USource F L sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a b) -> VecList n (UArray F L sh a) -> UArray D SH sh b Source #

izipM :: (USource F L sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a (IO b)) -> VecList n (UArray F L sh a) -> UArray D SH sh b Source #

Shape sh => DefaultIFusion MB L D SH sh Source # 

Methods

imap :: (USource MB L sh a, USource D SH sh b) => (sh -> a -> b) -> UArray MB L sh a -> UArray D SH sh b Source #

imapM :: (USource MB L sh a, USource D SH sh b) => (sh -> a -> IO b) -> UArray MB L sh a -> UArray D SH sh b Source #

izip2 :: (USource MB L sh a, USource MB L sh b, USource D SH sh c) => (sh -> a -> b -> c) -> UArray MB L sh a -> UArray MB L sh b -> UArray D SH sh c Source #

izip2M :: (USource MB L sh a, USource MB L sh b, USource D SH sh c) => (sh -> a -> b -> IO c) -> UArray MB L sh a -> UArray MB L sh b -> UArray D SH sh c Source #

izip3 :: (USource MB L sh a, USource MB L sh b, USource MB L sh c, USource D SH sh d) => (sh -> a -> b -> c -> d) -> UArray MB L sh a -> UArray MB L sh b -> UArray MB L sh c -> UArray D SH sh d Source #

izip3M :: (USource MB L sh a, USource MB L sh b, USource MB L sh c, USource D SH sh d) => (sh -> a -> b -> c -> IO d) -> UArray MB L sh a -> UArray MB L sh b -> UArray MB L sh c -> UArray D SH sh d Source #

izip :: (USource MB L sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a b) -> VecList n (UArray MB L sh a) -> UArray D SH sh b Source #

izipM :: (USource MB L sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a (IO b)) -> VecList n (UArray MB L sh a) -> UArray D SH sh b Source #

Shape sh => DefaultIFusion B L D SH sh Source # 

Methods

imap :: (USource B L sh a, USource D SH sh b) => (sh -> a -> b) -> UArray B L sh a -> UArray D SH sh b Source #

imapM :: (USource B L sh a, USource D SH sh b) => (sh -> a -> IO b) -> UArray B L sh a -> UArray D SH sh b Source #

izip2 :: (USource B L sh a, USource B L sh b, USource D SH sh c) => (sh -> a -> b -> c) -> UArray B L sh a -> UArray B L sh b -> UArray D SH sh c Source #

izip2M :: (USource B L sh a, USource B L sh b, USource D SH sh c) => (sh -> a -> b -> IO c) -> UArray B L sh a -> UArray B L sh b -> UArray D SH sh c Source #

izip3 :: (USource B L sh a, USource B L sh b, USource B L sh c, USource D SH sh d) => (sh -> a -> b -> c -> d) -> UArray B L sh a -> UArray B L sh b -> UArray B L sh c -> UArray D SH sh d Source #

izip3M :: (USource B L sh a, USource B L sh b, USource B L sh c, USource D SH sh d) => (sh -> a -> b -> c -> IO d) -> UArray B L sh a -> UArray B L sh b -> UArray B L sh c -> UArray D SH sh d Source #

izip :: (USource B L sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a b) -> VecList n (UArray B L sh a) -> UArray D SH sh b Source #

izipM :: (USource B L sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a (IO b)) -> VecList n (UArray B L sh a) -> UArray D SH sh b Source #

Shape sh => IFusion r l D SH sh Source # 

Methods

fimap :: (USource r l sh a, USource D SH sh b) => (sh -> a -> b) -> UArray r l sh a -> UArray D SH sh b Source #

fimapM :: (USource r l sh a, USource D SH sh b) => (sh -> a -> IO b) -> UArray r l sh a -> UArray D SH sh b Source #

fizip2 :: (USource r l sh a, USource r l sh b, USource D SH sh c) => (sh -> a -> b -> c) -> UArray r l sh a -> UArray r l sh b -> UArray D SH sh c Source #

fizip2M :: (USource r l sh a, USource r l sh b, USource D SH sh c) => (sh -> a -> b -> IO c) -> UArray r l sh a -> UArray r l sh b -> UArray D SH sh c Source #

fizip3 :: (USource r l sh a, USource r l sh b, USource r l sh c, USource D SH sh d) => (sh -> a -> b -> c -> d) -> UArray r l sh a -> UArray r l sh b -> UArray r l sh c -> UArray D SH sh d Source #

fizip3M :: (USource r l sh a, USource r l sh b, USource r l sh c, USource D SH sh d) => (sh -> a -> b -> c -> IO d) -> UArray r l sh a -> UArray r l sh b -> UArray r l sh c -> UArray D SH sh d Source #

fizip :: (USource r l sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a b) -> VecList n (UArray r l sh a) -> UArray D SH sh b Source #

fizipM :: (USource r l sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a (IO b)) -> VecList n (UArray r l sh a) -> UArray D SH sh b Source #

(Shape sh, Vector v e) => UVecSource D D SH sh v e Source # 
(Shape sh, Vector v e) => UVecSource D D L sh v e Source # 
(Shape sh, Vector v e) => VecRegular D D SH sh v e Source # 

Methods

slices :: UArray D SH sh (v e) -> VecList (Dim v) (UArray D SH sh e) Source #

(Shape sh, Vector v e) => VecRegular D D L sh v e Source # 

Methods

slices :: UArray D L sh (v e) -> VecList (Dim v) (UArray D L sh e) Source #

(DefaultFusion r D l sh, Fusion (SE r) D l sh) => DefaultFusion (SE r) D l sh Source # 

Methods

dmap :: (USource (SE r) l sh a, USource D l sh b) => (a -> b) -> UArray (SE r) l sh a -> UArray D l sh b Source #

dmapM :: (USource (SE r) l sh a, USource D l sh b) => (a -> IO b) -> UArray (SE r) l sh a -> UArray D l sh b Source #

dzip2 :: (USource (SE r) l sh a, USource (SE r) l sh b, USource D l sh c) => (a -> b -> c) -> UArray (SE r) l sh a -> UArray (SE r) l sh b -> UArray D l sh c Source #

dzip2M :: (USource (SE r) l sh a, USource (SE r) l sh b, USource D l sh c) => (a -> b -> IO c) -> UArray (SE r) l sh a -> UArray (SE r) l sh b -> UArray D l sh c Source #

dzip3 :: (USource (SE r) l sh a, USource (SE r) l sh b, USource (SE r) l sh c, USource D l sh d) => (a -> b -> c -> d) -> UArray (SE r) l sh a -> UArray (SE r) l sh b -> UArray (SE r) l sh c -> UArray D l sh d Source #

dzip3M :: (USource (SE r) l sh a, USource (SE r) l sh b, USource (SE r) l sh c, USource D l sh d) => (a -> b -> c -> IO d) -> UArray (SE r) l sh a -> UArray (SE r) l sh b -> UArray (SE r) l sh c -> UArray D l sh d Source #

dzip :: (USource (SE r) l sh a, USource D l sh b, Arity n, (* ~ n) (S n0)) => Fun n a b -> VecList n (UArray (SE r) l sh a) -> UArray D l sh b Source #

dzipM :: (USource (SE r) l sh a, USource D l sh b, Arity n, (* ~ n) (S n0)) => Fun n a (IO b) -> VecList n (UArray (SE r) l sh a) -> UArray D l sh b Source #

(DefaultIFusion r l D SH sh, IFusion (SE r) l D SH sh) => DefaultIFusion (SE r) l D SH sh Source # 

Methods

imap :: (USource (SE r) l sh a, USource D SH sh b) => (sh -> a -> b) -> UArray (SE r) l sh a -> UArray D SH sh b Source #

imapM :: (USource (SE r) l sh a, USource D SH sh b) => (sh -> a -> IO b) -> UArray (SE r) l sh a -> UArray D SH sh b Source #

izip2 :: (USource (SE r) l sh a, USource (SE r) l sh b, USource D SH sh c) => (sh -> a -> b -> c) -> UArray (SE r) l sh a -> UArray (SE r) l sh b -> UArray D SH sh c Source #

izip2M :: (USource (SE r) l sh a, USource (SE r) l sh b, USource D SH sh c) => (sh -> a -> b -> IO c) -> UArray (SE r) l sh a -> UArray (SE r) l sh b -> UArray D SH sh c Source #

izip3 :: (USource (SE r) l sh a, USource (SE r) l sh b, USource (SE r) l sh c, USource D SH sh d) => (sh -> a -> b -> c -> d) -> UArray (SE r) l sh a -> UArray (SE r) l sh b -> UArray (SE r) l sh c -> UArray D SH sh d Source #

izip3M :: (USource (SE r) l sh a, USource (SE r) l sh b, USource (SE r) l sh c, USource D SH sh d) => (sh -> a -> b -> c -> IO d) -> UArray (SE r) l sh a -> UArray (SE r) l sh b -> UArray (SE r) l sh c -> UArray D SH sh d Source #

izip :: (USource (SE r) l sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a b) -> VecList n (UArray (SE r) l sh a) -> UArray D SH sh b Source #

izipM :: (USource (SE r) l sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a (IO b)) -> VecList n (UArray (SE r) l sh a) -> UArray D SH sh b Source #

Shape sh => NFData (UArray D SH sh a) Source # 

Methods

rnf :: UArray D SH sh a -> () #

Shape sh => NFData (UArray D L sh a) Source # 

Methods

rnf :: UArray D L sh a -> () #

data UArray D SH Source # 
data UArray D SH = ShapeDelayed !sh (IO ()) (IO ()) (sh -> IO a)
data UArray D L Source # 
data UArray D L = LinearDelayed !sh (IO ()) (IO ()) (Int -> IO a)

Delayed target

data DT Source #

In opposite to Delayed (source) Delayed Target holds abstract writing function: (sh -> a -> IO ()). It may be used to perform arbitrarily tricky things, because no one obliges you to indeed write an element inside wrapped function.

Instances

Shape sh => UTarget DT SH sh a Source # 

Methods

write :: UArray DT SH sh a -> sh -> a -> IO () Source #

linearWrite :: UArray DT SH sh a -> Int -> a -> IO () Source #

Shape sh => Regular DT SH sh a Source # 

Associated Types

data UArray DT SH sh a :: * Source #

Methods

extent :: UArray DT SH sh a -> sh Source #

touchArray :: UArray DT SH sh a -> IO () Source #

force :: UArray DT SH sh a -> IO () Source #

Shape sh => NFData (UArray DT SH sh a) Source # 

Methods

rnf :: UArray DT SH sh a -> () #

data UArray DT SH Source # 
data UArray DT SH = ShapeDelayedTarget !sh (IO ()) (IO ()) (sh -> a -> IO ())

There are also LinearDelayed, ShapeDelayed and ShapeDelayedTarget UArray family constructors, which aren't presented in the docs because Haddock doesn't support associated family constructors.

See source of Data.Yarr.Repr.Delayed module.

Misc

data L Source #

Linear load type index. UArrays with L load type index define linearIndex and linearWrite and leave index and write functions defined by default.

Instances

WorkIndex sh Int => PreferredWorkIndex L sh Int Source # 
(Shape sh, Storable e) => UTarget FS L sh e Source # 

Methods

write :: UArray FS L sh e -> sh -> e -> IO () Source #

linearWrite :: UArray FS L sh e -> Int -> e -> IO () Source #

(Shape sh, Storable a) => UTarget F L sh a Source # 

Methods

write :: UArray F L sh a -> sh -> a -> IO () Source #

linearWrite :: UArray F L sh a -> Int -> a -> IO () Source #

(Shape sh, NFData a) => UTarget MB L sh a Source # 

Methods

write :: UArray MB L sh a -> sh -> a -> IO () Source #

linearWrite :: UArray MB L sh a -> Int -> a -> IO () Source #

Shape sh => USource D L sh a Source # 

Methods

index :: UArray D L sh a -> sh -> IO a Source #

linearIndex :: UArray D L sh a -> Int -> IO a Source #

(Shape sh, Storable e) => USource FS L sh e Source # 

Methods

index :: UArray FS L sh e -> sh -> IO e Source #

linearIndex :: UArray FS L sh e -> Int -> IO e Source #

(Shape sh, Storable a) => USource F L sh a Source # 

Methods

index :: UArray F L sh a -> sh -> IO a Source #

linearIndex :: UArray F L sh a -> Int -> IO a Source #

(Shape sh, NFData a) => USource MB L sh a Source # 

Methods

index :: UArray MB L sh a -> sh -> IO a Source #

linearIndex :: UArray MB L sh a -> Int -> IO a Source #

(Shape sh, NFData a) => USource B L sh a Source # 

Methods

index :: UArray B L sh a -> sh -> IO a Source #

linearIndex :: UArray B L sh a -> Int -> IO a Source #

Shape sh => Regular D L sh a Source # 

Associated Types

data UArray D L sh a :: * Source #

Methods

extent :: UArray D L sh a -> sh Source #

touchArray :: UArray D L sh a -> IO () Source #

force :: UArray D L sh a -> IO () Source #

Shape sh => Regular FS L sh e Source # 

Associated Types

data UArray FS L sh e :: * Source #

Methods

extent :: UArray FS L sh e -> sh Source #

touchArray :: UArray FS L sh e -> IO () Source #

force :: UArray FS L sh e -> IO () Source #

Shape sh => Regular F L sh a Source # 

Associated Types

data UArray F L sh a :: * Source #

Methods

extent :: UArray F L sh a -> sh Source #

touchArray :: UArray F L sh a -> IO () Source #

force :: UArray F L sh a -> IO () Source #

(Shape sh, NFData a) => Regular MB L sh a Source # 

Associated Types

data UArray MB L sh a :: * Source #

Methods

extent :: UArray MB L sh a -> sh Source #

touchArray :: UArray MB L sh a -> IO () Source #

force :: UArray MB L sh a -> IO () Source #

(Shape sh, NFData a) => Regular B L sh a Source # 

Associated Types

data UArray B L sh a :: * Source #

Methods

extent :: UArray B L sh a -> sh Source #

touchArray :: UArray B L sh a -> IO () Source #

force :: UArray B L sh a -> IO () Source #

DefaultFusion D D L sh Source # 

Methods

dmap :: (USource D L sh a, USource D L sh b) => (a -> b) -> UArray D L sh a -> UArray D L sh b Source #

dmapM :: (USource D L sh a, USource D L sh b) => (a -> IO b) -> UArray D L sh a -> UArray D L sh b Source #

dzip2 :: (USource D L sh a, USource D L sh b, USource D L sh c) => (a -> b -> c) -> UArray D L sh a -> UArray D L sh b -> UArray D L sh c Source #

dzip2M :: (USource D L sh a, USource D L sh b, USource D L sh c) => (a -> b -> IO c) -> UArray D L sh a -> UArray D L sh b -> UArray D L sh c Source #

dzip3 :: (USource D L sh a, USource D L sh b, USource D L sh c, USource D L sh d) => (a -> b -> c -> d) -> UArray D L sh a -> UArray D L sh b -> UArray D L sh c -> UArray D L sh d Source #

dzip3M :: (USource D L sh a, USource D L sh b, USource D L sh c, USource D L sh d) => (a -> b -> c -> IO d) -> UArray D L sh a -> UArray D L sh b -> UArray D L sh c -> UArray D L sh d Source #

dzip :: (USource D L sh a, USource D L sh b, Arity n, (* ~ n) (S n0)) => Fun n a b -> VecList n (UArray D L sh a) -> UArray D L sh b Source #

dzipM :: (USource D L sh a, USource D L sh b, Arity n, (* ~ n) (S n0)) => Fun n a (IO b) -> VecList n (UArray D L sh a) -> UArray D L sh b Source #

DefaultFusion FS D L sh Source # 

Methods

dmap :: (USource FS L sh a, USource D L sh b) => (a -> b) -> UArray FS L sh a -> UArray D L sh b Source #

dmapM :: (USource FS L sh a, USource D L sh b) => (a -> IO b) -> UArray FS L sh a -> UArray D L sh b Source #

dzip2 :: (USource FS L sh a, USource FS L sh b, USource D L sh c) => (a -> b -> c) -> UArray FS L sh a -> UArray FS L sh b -> UArray D L sh c Source #

dzip2M :: (USource FS L sh a, USource FS L sh b, USource D L sh c) => (a -> b -> IO c) -> UArray FS L sh a -> UArray FS L sh b -> UArray D L sh c Source #

dzip3 :: (USource FS L sh a, USource FS L sh b, USource FS L sh c, USource D L sh d) => (a -> b -> c -> d) -> UArray FS L sh a -> UArray FS L sh b -> UArray FS L sh c -> UArray D L sh d Source #

dzip3M :: (USource FS L sh a, USource FS L sh b, USource FS L sh c, USource D L sh d) => (a -> b -> c -> IO d) -> UArray FS L sh a -> UArray FS L sh b -> UArray FS L sh c -> UArray D L sh d Source #

dzip :: (USource FS L sh a, USource D L sh b, Arity n, (* ~ n) (S n0)) => Fun n a b -> VecList n (UArray FS L sh a) -> UArray D L sh b Source #

dzipM :: (USource FS L sh a, USource D L sh b, Arity n, (* ~ n) (S n0)) => Fun n a (IO b) -> VecList n (UArray FS L sh a) -> UArray D L sh b Source #

DefaultFusion F D L sh Source # 

Methods

dmap :: (USource F L sh a, USource D L sh b) => (a -> b) -> UArray F L sh a -> UArray D L sh b Source #

dmapM :: (USource F L sh a, USource D L sh b) => (a -> IO b) -> UArray F L sh a -> UArray D L sh b Source #

dzip2 :: (USource F L sh a, USource F L sh b, USource D L sh c) => (a -> b -> c) -> UArray F L sh a -> UArray F L sh b -> UArray D L sh c Source #

dzip2M :: (USource F L sh a, USource F L sh b, USource D L sh c) => (a -> b -> IO c) -> UArray F L sh a -> UArray F L sh b -> UArray D L sh c Source #

dzip3 :: (USource F L sh a, USource F L sh b, USource F L sh c, USource D L sh d) => (a -> b -> c -> d) -> UArray F L sh a -> UArray F L sh b -> UArray F L sh c -> UArray D L sh d Source #

dzip3M :: (USource F L sh a, USource F L sh b, USource F L sh c, USource D L sh d) => (a -> b -> c -> IO d) -> UArray F L sh a -> UArray F L sh b -> UArray F L sh c -> UArray D L sh d Source #

dzip :: (USource F L sh a, USource D L sh b, Arity n, (* ~ n) (S n0)) => Fun n a b -> VecList n (UArray F L sh a) -> UArray D L sh b Source #

dzipM :: (USource F L sh a, USource D L sh b, Arity n, (* ~ n) (S n0)) => Fun n a (IO b) -> VecList n (UArray F L sh a) -> UArray D L sh b Source #

DefaultFusion MB D L sh Source # 

Methods

dmap :: (USource MB L sh a, USource D L sh b) => (a -> b) -> UArray MB L sh a -> UArray D L sh b Source #

dmapM :: (USource MB L sh a, USource D L sh b) => (a -> IO b) -> UArray MB L sh a -> UArray D L sh b Source #

dzip2 :: (USource MB L sh a, USource MB L sh b, USource D L sh c) => (a -> b -> c) -> UArray MB L sh a -> UArray MB L sh b -> UArray D L sh c Source #

dzip2M :: (USource MB L sh a, USource MB L sh b, USource D L sh c) => (a -> b -> IO c) -> UArray MB L sh a -> UArray MB L sh b -> UArray D L sh c Source #

dzip3 :: (USource MB L sh a, USource MB L sh b, USource MB L sh c, USource D L sh d) => (a -> b -> c -> d) -> UArray MB L sh a -> UArray MB L sh b -> UArray MB L sh c -> UArray D L sh d Source #

dzip3M :: (USource MB L sh a, USource MB L sh b, USource MB L sh c, USource D L sh d) => (a -> b -> c -> IO d) -> UArray MB L sh a -> UArray MB L sh b -> UArray MB L sh c -> UArray D L sh d Source #

dzip :: (USource MB L sh a, USource D L sh b, Arity n, (* ~ n) (S n0)) => Fun n a b -> VecList n (UArray MB L sh a) -> UArray D L sh b Source #

dzipM :: (USource MB L sh a, USource D L sh b, Arity n, (* ~ n) (S n0)) => Fun n a (IO b) -> VecList n (UArray MB L sh a) -> UArray D L sh b Source #

DefaultFusion B D L sh Source # 

Methods

dmap :: (USource B L sh a, USource D L sh b) => (a -> b) -> UArray B L sh a -> UArray D L sh b Source #

dmapM :: (USource B L sh a, USource D L sh b) => (a -> IO b) -> UArray B L sh a -> UArray D L sh b Source #

dzip2 :: (USource B L sh a, USource B L sh b, USource D L sh c) => (a -> b -> c) -> UArray B L sh a -> UArray B L sh b -> UArray D L sh c Source #

dzip2M :: (USource B L sh a, USource B L sh b, USource D L sh c) => (a -> b -> IO c) -> UArray B L sh a -> UArray B L sh b -> UArray D L sh c Source #

dzip3 :: (USource B L sh a, USource B L sh b, USource B L sh c, USource D L sh d) => (a -> b -> c -> d) -> UArray B L sh a -> UArray B L sh b -> UArray B L sh c -> UArray D L sh d Source #

dzip3M :: (USource B L sh a, USource B L sh b, USource B L sh c, USource D L sh d) => (a -> b -> c -> IO d) -> UArray B L sh a -> UArray B L sh b -> UArray B L sh c -> UArray D L sh d Source #

dzip :: (USource B L sh a, USource D L sh b, Arity n, (* ~ n) (S n0)) => Fun n a b -> VecList n (UArray B L sh a) -> UArray D L sh b Source #

dzipM :: (USource B L sh a, USource D L sh b, Arity n, (* ~ n) (S n0)) => Fun n a (IO b) -> VecList n (UArray B L sh a) -> UArray D L sh b Source #

Fusion r D L sh Source # 

Methods

fmap :: (USource r L sh a, USource D L sh b) => (a -> b) -> UArray r L sh a -> UArray D L sh b Source #

fmapM :: (USource r L sh a, USource D L sh b) => (a -> IO b) -> UArray r L sh a -> UArray D L sh b Source #

fzip2 :: (USource r L sh a, USource r L sh b, USource D L sh c) => (a -> b -> c) -> UArray r L sh a -> UArray r L sh b -> UArray D L sh c Source #

fzip2M :: (USource r L sh a, USource r L sh b, USource D L sh c) => (a -> b -> IO c) -> UArray r L sh a -> UArray r L sh b -> UArray D L sh c Source #

fzip3 :: (USource r L sh a, USource r L sh b, USource r L sh c, USource D L sh d) => (a -> b -> c -> d) -> UArray r L sh a -> UArray r L sh b -> UArray r L sh c -> UArray D L sh d Source #

fzip3M :: (USource r L sh a, USource r L sh b, USource r L sh c, USource D L sh d) => (a -> b -> c -> IO d) -> UArray r L sh a -> UArray r L sh b -> UArray r L sh c -> UArray D L sh d Source #

fzip :: (USource r L sh a, USource D L sh b, Arity n, (* ~ n) (S n0)) => Fun n a b -> VecList n (UArray r L sh a) -> UArray D L sh b Source #

fzipM :: (USource r L sh a, USource D L sh b, Arity n, (* ~ n) (S n0)) => Fun n a (IO b) -> VecList n (UArray r L sh a) -> UArray D L sh b Source #

(Shape sh, Storable a) => Manifest F F L sh a Source # 

Methods

new :: sh -> IO (UArray F L sh a) Source #

freeze :: UArray F L sh a -> IO (UArray F L sh a) Source #

thaw :: UArray F L sh a -> IO (UArray F L sh a) Source #

(Shape sh, NFData a) => Manifest B MB L sh a Source # 

Methods

new :: sh -> IO (UArray MB L sh a) Source #

freeze :: UArray MB L sh a -> IO (UArray B L sh a) Source #

thaw :: UArray B L sh a -> IO (UArray MB L sh a) Source #

Shape sh => DefaultIFusion D L D SH sh Source # 

Methods

imap :: (USource D L sh a, USource D SH sh b) => (sh -> a -> b) -> UArray D L sh a -> UArray D SH sh b Source #

imapM :: (USource D L sh a, USource D SH sh b) => (sh -> a -> IO b) -> UArray D L sh a -> UArray D SH sh b Source #

izip2 :: (USource D L sh a, USource D L sh b, USource D SH sh c) => (sh -> a -> b -> c) -> UArray D L sh a -> UArray D L sh b -> UArray D SH sh c Source #

izip2M :: (USource D L sh a, USource D L sh b, USource D SH sh c) => (sh -> a -> b -> IO c) -> UArray D L sh a -> UArray D L sh b -> UArray D SH sh c Source #

izip3 :: (USource D L sh a, USource D L sh b, USource D L sh c, USource D SH sh d) => (sh -> a -> b -> c -> d) -> UArray D L sh a -> UArray D L sh b -> UArray D L sh c -> UArray D SH sh d Source #

izip3M :: (USource D L sh a, USource D L sh b, USource D L sh c, USource D SH sh d) => (sh -> a -> b -> c -> IO d) -> UArray D L sh a -> UArray D L sh b -> UArray D L sh c -> UArray D SH sh d Source #

izip :: (USource D L sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a b) -> VecList n (UArray D L sh a) -> UArray D SH sh b Source #

izipM :: (USource D L sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a (IO b)) -> VecList n (UArray D L sh a) -> UArray D SH sh b Source #

Shape sh => DefaultIFusion FS L D SH sh Source # 

Methods

imap :: (USource FS L sh a, USource D SH sh b) => (sh -> a -> b) -> UArray FS L sh a -> UArray D SH sh b Source #

imapM :: (USource FS L sh a, USource D SH sh b) => (sh -> a -> IO b) -> UArray FS L sh a -> UArray D SH sh b Source #

izip2 :: (USource FS L sh a, USource FS L sh b, USource D SH sh c) => (sh -> a -> b -> c) -> UArray FS L sh a -> UArray FS L sh b -> UArray D SH sh c Source #

izip2M :: (USource FS L sh a, USource FS L sh b, USource D SH sh c) => (sh -> a -> b -> IO c) -> UArray FS L sh a -> UArray FS L sh b -> UArray D SH sh c Source #

izip3 :: (USource FS L sh a, USource FS L sh b, USource FS L sh c, USource D SH sh d) => (sh -> a -> b -> c -> d) -> UArray FS L sh a -> UArray FS L sh b -> UArray FS L sh c -> UArray D SH sh d Source #

izip3M :: (USource FS L sh a, USource FS L sh b, USource FS L sh c, USource D SH sh d) => (sh -> a -> b -> c -> IO d) -> UArray FS L sh a -> UArray FS L sh b -> UArray FS L sh c -> UArray D SH sh d Source #

izip :: (USource FS L sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a b) -> VecList n (UArray FS L sh a) -> UArray D SH sh b Source #

izipM :: (USource FS L sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a (IO b)) -> VecList n (UArray FS L sh a) -> UArray D SH sh b Source #

Shape sh => DefaultIFusion F L D SH sh Source # 

Methods

imap :: (USource F L sh a, USource D SH sh b) => (sh -> a -> b) -> UArray F L sh a -> UArray D SH sh b Source #

imapM :: (USource F L sh a, USource D SH sh b) => (sh -> a -> IO b) -> UArray F L sh a -> UArray D SH sh b Source #

izip2 :: (USource F L sh a, USource F L sh b, USource D SH sh c) => (sh -> a -> b -> c) -> UArray F L sh a -> UArray F L sh b -> UArray D SH sh c Source #

izip2M :: (USource F L sh a, USource F L sh b, USource D SH sh c) => (sh -> a -> b -> IO c) -> UArray F L sh a -> UArray F L sh b -> UArray D SH sh c Source #

izip3 :: (USource F L sh a, USource F L sh b, USource F L sh c, USource D SH sh d) => (sh -> a -> b -> c -> d) -> UArray F L sh a -> UArray F L sh b -> UArray F L sh c -> UArray D SH sh d Source #

izip3M :: (USource F L sh a, USource F L sh b, USource F L sh c, USource D SH sh d) => (sh -> a -> b -> c -> IO d) -> UArray F L sh a -> UArray F L sh b -> UArray F L sh c -> UArray D SH sh d Source #

izip :: (USource F L sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a b) -> VecList n (UArray F L sh a) -> UArray D SH sh b Source #

izipM :: (USource F L sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a (IO b)) -> VecList n (UArray F L sh a) -> UArray D SH sh b Source #

Shape sh => DefaultIFusion MB L D SH sh Source # 

Methods

imap :: (USource MB L sh a, USource D SH sh b) => (sh -> a -> b) -> UArray MB L sh a -> UArray D SH sh b Source #

imapM :: (USource MB L sh a, USource D SH sh b) => (sh -> a -> IO b) -> UArray MB L sh a -> UArray D SH sh b Source #

izip2 :: (USource MB L sh a, USource MB L sh b, USource D SH sh c) => (sh -> a -> b -> c) -> UArray MB L sh a -> UArray MB L sh b -> UArray D SH sh c Source #

izip2M :: (USource MB L sh a, USource MB L sh b, USource D SH sh c) => (sh -> a -> b -> IO c) -> UArray MB L sh a -> UArray MB L sh b -> UArray D SH sh c Source #

izip3 :: (USource MB L sh a, USource MB L sh b, USource MB L sh c, USource D SH sh d) => (sh -> a -> b -> c -> d) -> UArray MB L sh a -> UArray MB L sh b -> UArray MB L sh c -> UArray D SH sh d Source #

izip3M :: (USource MB L sh a, USource MB L sh b, USource MB L sh c, USource D SH sh d) => (sh -> a -> b -> c -> IO d) -> UArray MB L sh a -> UArray MB L sh b -> UArray MB L sh c -> UArray D SH sh d Source #

izip :: (USource MB L sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a b) -> VecList n (UArray MB L sh a) -> UArray D SH sh b Source #

izipM :: (USource MB L sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a (IO b)) -> VecList n (UArray MB L sh a) -> UArray D SH sh b Source #

Shape sh => DefaultIFusion B L D SH sh Source # 

Methods

imap :: (USource B L sh a, USource D SH sh b) => (sh -> a -> b) -> UArray B L sh a -> UArray D SH sh b Source #

imapM :: (USource B L sh a, USource D SH sh b) => (sh -> a -> IO b) -> UArray B L sh a -> UArray D SH sh b Source #

izip2 :: (USource B L sh a, USource B L sh b, USource D SH sh c) => (sh -> a -> b -> c) -> UArray B L sh a -> UArray B L sh b -> UArray D SH sh c Source #

izip2M :: (USource B L sh a, USource B L sh b, USource D SH sh c) => (sh -> a -> b -> IO c) -> UArray B L sh a -> UArray B L sh b -> UArray D SH sh c Source #

izip3 :: (USource B L sh a, USource B L sh b, USource B L sh c, USource D SH sh d) => (sh -> a -> b -> c -> d) -> UArray B L sh a -> UArray B L sh b -> UArray B L sh c -> UArray D SH sh d Source #

izip3M :: (USource B L sh a, USource B L sh b, USource B L sh c, USource D SH sh d) => (sh -> a -> b -> c -> IO d) -> UArray B L sh a -> UArray B L sh b -> UArray B L sh c -> UArray D SH sh d Source #

izip :: (USource B L sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a b) -> VecList n (UArray B L sh a) -> UArray D SH sh b Source #

izipM :: (USource B L sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a (IO b)) -> VecList n (UArray B L sh a) -> UArray D SH sh b Source #

(Shape sh, Vector v e, Storable e, Storable (v e)) => UVecTarget F FS L sh v e Source # 
(Shape sh, Vector v e) => UVecSource D D L sh v e Source # 
(Shape sh, Vector v e, Storable e, Storable (v e)) => UVecSource F FS L sh v e Source # 
(Shape sh, Vector v e) => VecRegular D D L sh v e Source # 

Methods

slices :: UArray D L sh (v e) -> VecList (Dim v) (UArray D L sh e) Source #

(Shape sh, Vector v e, Storable e, Storable (v e)) => VecRegular F FS L sh v e Source # 

Methods

slices :: UArray F L sh (v e) -> VecList (Dim v) (UArray FS L sh e) Source #

Load r L tr SH sh a => RangeLoad r L tr SH sh a Source # 

Methods

rangeLoadP :: Fill sh a -> Threads -> UArray r L sh a -> UArray tr SH sh a -> sh -> sh -> IO () Source #

rangeLoadS :: Fill sh a -> UArray r L sh a -> UArray tr SH sh a -> sh -> sh -> IO () Source #

Load r SH tr L sh a => RangeLoad r SH tr L sh a Source # 

Methods

rangeLoadP :: Fill sh a -> Threads -> UArray r SH sh a -> UArray tr L sh a -> sh -> sh -> IO () Source #

rangeLoadS :: Fill sh a -> UArray r SH sh a -> UArray tr L sh a -> sh -> sh -> IO () Source #

Load r L tr L sh a => RangeLoad r L tr L sh a Source # 

Methods

rangeLoadP :: Fill sh a -> Threads -> UArray r L sh a -> UArray tr L sh a -> sh -> sh -> IO () Source #

rangeLoadS :: Fill sh a -> UArray r L sh a -> UArray tr L sh a -> sh -> sh -> IO () Source #

(USource r L sh a, UTarget tr SH sh a) => Load r L tr SH sh a Source # 

Associated Types

type LoadIndex L SH sh :: * Source #

Methods

loadP :: Fill (LoadIndex L SH sh) a -> Threads -> UArray r L sh a -> UArray tr SH sh a -> IO () Source #

loadS :: Fill (LoadIndex L SH sh) a -> UArray r L sh a -> UArray tr SH sh a -> IO () Source #

(USource r SH sh a, UTarget tr L sh a) => Load r SH tr L sh a Source # 

Associated Types

type LoadIndex SH L sh :: * Source #

Methods

loadP :: Fill (LoadIndex SH L sh) a -> Threads -> UArray r SH sh a -> UArray tr L sh a -> IO () Source #

loadS :: Fill (LoadIndex SH L sh) a -> UArray r SH sh a -> UArray tr L sh a -> IO () Source #

(USource r L sh a, UTarget tr L sh a, WorkIndex sh Int) => Load r L tr L sh a Source # 

Associated Types

type LoadIndex L L sh :: * Source #

Methods

loadP :: Fill (LoadIndex L L sh) a -> Threads -> UArray r L sh a -> UArray tr L sh a -> IO () Source #

loadS :: Fill (LoadIndex L L sh) a -> UArray r L sh a -> UArray tr L sh a -> IO () Source #

(VecLoad r slr L tr tslr SH sh v v2 e, RangeLoad slr L tslr SH sh e) => RangeVecLoad r slr L tr tslr SH sh v v2 e Source # 

Methods

rangeLoadSlicesP :: Fill sh e -> Threads -> UArray r L sh (v e) -> UArray tr SH sh (v2 e) -> sh -> sh -> IO () Source #

rangeLoadSlicesS :: Fill sh e -> UArray r L sh (v e) -> UArray tr SH sh (v2 e) -> sh -> sh -> IO () Source #

(VecLoad r slr SH tr tslr L sh v v2 e, RangeLoad slr SH tslr L sh e) => RangeVecLoad r slr SH tr tslr L sh v v2 e Source # 

Methods

rangeLoadSlicesP :: Fill sh e -> Threads -> UArray r SH sh (v e) -> UArray tr L sh (v2 e) -> sh -> sh -> IO () Source #

rangeLoadSlicesS :: Fill sh e -> UArray r SH sh (v e) -> UArray tr L sh (v2 e) -> sh -> sh -> IO () Source #

(VecLoad r slr L tr tslr L sh v v2 e, RangeLoad slr L tslr L sh e) => RangeVecLoad r slr L tr tslr L sh v v2 e Source # 

Methods

rangeLoadSlicesP :: Fill sh e -> Threads -> UArray r L sh (v e) -> UArray tr L sh (v2 e) -> sh -> sh -> IO () Source #

rangeLoadSlicesS :: Fill sh e -> UArray r L sh (v e) -> UArray tr L sh (v2 e) -> sh -> sh -> IO () Source #

(UVecSource r slr L sh v e, UVecTarget tr tslr SH sh v2 e, Load slr L tslr SH sh e, (~) * (Dim v) (Dim v2)) => VecLoad r slr L tr tslr SH sh v v2 e Source # 

Methods

loadSlicesP :: Fill (LoadIndex L SH sh) e -> Threads -> UArray r L sh (v e) -> UArray tr SH sh (v2 e) -> IO () Source #

loadSlicesS :: Fill (LoadIndex L SH sh) e -> UArray r L sh (v e) -> UArray tr SH sh (v2 e) -> IO () Source #

(UVecSource r slr SH sh v e, UVecTarget tr tslr L sh v2 e, Load slr SH tslr L sh e, (~) * (Dim v) (Dim v2)) => VecLoad r slr SH tr tslr L sh v v2 e Source # 

Methods

loadSlicesP :: Fill (LoadIndex SH L sh) e -> Threads -> UArray r SH sh (v e) -> UArray tr L sh (v2 e) -> IO () Source #

loadSlicesS :: Fill (LoadIndex SH L sh) e -> UArray r SH sh (v e) -> UArray tr L sh (v2 e) -> IO () Source #

(UVecSource r slr L sh v e, UVecTarget tr tslr L sh v2 e, Load slr L tslr L sh e, (~) * (Dim v) (Dim v2)) => VecLoad r slr L tr tslr L sh v v2 e Source # 

Methods

loadSlicesP :: Fill (LoadIndex L L sh) e -> Threads -> UArray r L sh (v e) -> UArray tr L sh (v2 e) -> IO () Source #

loadSlicesS :: Fill (LoadIndex L L sh) e -> UArray r L sh (v e) -> UArray tr L sh (v2 e) -> IO () Source #

(Shape sh, Vector v e, Storable e) => UVecSource (SE F) F L sh v e Source # 
(Shape sh, Vector v e, NFData e) => UVecSource (SE MB) MB L sh v e Source # 
(Shape sh, Vector v e, NFData e) => UVecSource (SE B) B L sh v e Source # 
Shape sh => NFData (UArray D L sh a) # 

Methods

rnf :: UArray D L sh a -> () #

Shape sh => NFData (UArray FS L sh e) # 

Methods

rnf :: UArray FS L sh e -> () #

Shape sh => NFData (UArray F L sh a) # 

Methods

rnf :: UArray F L sh a -> () #

(Shape sh, NFData a) => NFData (UArray MB L sh a) # 

Methods

rnf :: UArray MB L sh a -> () #

(Shape sh, NFData a) => NFData (UArray B L sh a) # 

Methods

rnf :: UArray B L sh a -> () #

data UArray D L Source # 
data UArray D L = LinearDelayed !sh (IO ()) (IO ()) (Int -> IO a)
data UArray FS L Source # 
data UArray FS L = ForeignSlice !sh !Int !(ForeignPtr e) !(Ptr e)
data UArray F L Source # 
data UArray F L = ForeignArray !sh !(ForeignPtr a) !(Ptr a)
data UArray MB L Source # 
data UArray B L Source # 
data UArray B L = Boxed !sh !(Array a)
type LoadIndex SH L sh Source # 
type LoadIndex SH L sh = sh
type LoadIndex L SH sh Source # 
type LoadIndex L SH sh = sh
type LoadIndex L L sh Source # 
type LoadIndex L L sh = Int

data SH Source #

General shape load type index. UArrays with SH load type index specialize index and write and leave linearIndex and linearWrite functions defined by default.

Type-level distinction between Linear and SHaped arrays is aimed to avoid integral division operations while looping through composite (Dim2, Dim3) indices.

Integral division is very expensive operation even on modern CPUs.

Instances

Shape sh => PreferredWorkIndex SH sh sh Source # 
Shape sh => UTarget DT SH sh a Source # 

Methods

write :: UArray DT SH sh a -> sh -> a -> IO () Source #

linearWrite :: UArray DT SH sh a -> Int -> a -> IO () Source #

Shape sh => USource D SH sh a Source # 

Methods

index :: UArray D SH sh a -> sh -> IO a Source #

linearIndex :: UArray D SH sh a -> Int -> IO a Source #

Shape sh => Regular DT SH sh a Source # 

Associated Types

data UArray DT SH sh a :: * Source #

Methods

extent :: UArray DT SH sh a -> sh Source #

touchArray :: UArray DT SH sh a -> IO () Source #

force :: UArray DT SH sh a -> IO () Source #

Shape sh => Regular D SH sh a Source # 

Associated Types

data UArray D SH sh a :: * Source #

Methods

extent :: UArray D SH sh a -> sh Source #

touchArray :: UArray D SH sh a -> IO () Source #

force :: UArray D SH sh a -> IO () Source #

Shape sh => DefaultFusion D D SH sh Source # 

Methods

dmap :: (USource D SH sh a, USource D SH sh b) => (a -> b) -> UArray D SH sh a -> UArray D SH sh b Source #

dmapM :: (USource D SH sh a, USource D SH sh b) => (a -> IO b) -> UArray D SH sh a -> UArray D SH sh b Source #

dzip2 :: (USource D SH sh a, USource D SH sh b, USource D SH sh c) => (a -> b -> c) -> UArray D SH sh a -> UArray D SH sh b -> UArray D SH sh c Source #

dzip2M :: (USource D SH sh a, USource D SH sh b, USource D SH sh c) => (a -> b -> IO c) -> UArray D SH sh a -> UArray D SH sh b -> UArray D SH sh c Source #

dzip3 :: (USource D SH sh a, USource D SH sh b, USource D SH sh c, USource D SH sh d) => (a -> b -> c -> d) -> UArray D SH sh a -> UArray D SH sh b -> UArray D SH sh c -> UArray D SH sh d Source #

dzip3M :: (USource D SH sh a, USource D SH sh b, USource D SH sh c, USource D SH sh d) => (a -> b -> c -> IO d) -> UArray D SH sh a -> UArray D SH sh b -> UArray D SH sh c -> UArray D SH sh d Source #

dzip :: (USource D SH sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => Fun n a b -> VecList n (UArray D SH sh a) -> UArray D SH sh b Source #

dzipM :: (USource D SH sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => Fun n a (IO b) -> VecList n (UArray D SH sh a) -> UArray D SH sh b Source #

Shape sh => DefaultIFusion D SH D SH sh Source # 

Methods

imap :: (USource D SH sh a, USource D SH sh b) => (sh -> a -> b) -> UArray D SH sh a -> UArray D SH sh b Source #

imapM :: (USource D SH sh a, USource D SH sh b) => (sh -> a -> IO b) -> UArray D SH sh a -> UArray D SH sh b Source #

izip2 :: (USource D SH sh a, USource D SH sh b, USource D SH sh c) => (sh -> a -> b -> c) -> UArray D SH sh a -> UArray D SH sh b -> UArray D SH sh c Source #

izip2M :: (USource D SH sh a, USource D SH sh b, USource D SH sh c) => (sh -> a -> b -> IO c) -> UArray D SH sh a -> UArray D SH sh b -> UArray D SH sh c Source #

izip3 :: (USource D SH sh a, USource D SH sh b, USource D SH sh c, USource D SH sh d) => (sh -> a -> b -> c -> d) -> UArray D SH sh a -> UArray D SH sh b -> UArray D SH sh c -> UArray D SH sh d Source #

izip3M :: (USource D SH sh a, USource D SH sh b, USource D SH sh c, USource D SH sh d) => (sh -> a -> b -> c -> IO d) -> UArray D SH sh a -> UArray D SH sh b -> UArray D SH sh c -> UArray D SH sh d Source #

izip :: (USource D SH sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a b) -> VecList n (UArray D SH sh a) -> UArray D SH sh b Source #

izipM :: (USource D SH sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a (IO b)) -> VecList n (UArray D SH sh a) -> UArray D SH sh b Source #

Shape sh => DefaultIFusion D L D SH sh Source # 

Methods

imap :: (USource D L sh a, USource D SH sh b) => (sh -> a -> b) -> UArray D L sh a -> UArray D SH sh b Source #

imapM :: (USource D L sh a, USource D SH sh b) => (sh -> a -> IO b) -> UArray D L sh a -> UArray D SH sh b Source #

izip2 :: (USource D L sh a, USource D L sh b, USource D SH sh c) => (sh -> a -> b -> c) -> UArray D L sh a -> UArray D L sh b -> UArray D SH sh c Source #

izip2M :: (USource D L sh a, USource D L sh b, USource D SH sh c) => (sh -> a -> b -> IO c) -> UArray D L sh a -> UArray D L sh b -> UArray D SH sh c Source #

izip3 :: (USource D L sh a, USource D L sh b, USource D L sh c, USource D SH sh d) => (sh -> a -> b -> c -> d) -> UArray D L sh a -> UArray D L sh b -> UArray D L sh c -> UArray D SH sh d Source #

izip3M :: (USource D L sh a, USource D L sh b, USource D L sh c, USource D SH sh d) => (sh -> a -> b -> c -> IO d) -> UArray D L sh a -> UArray D L sh b -> UArray D L sh c -> UArray D SH sh d Source #

izip :: (USource D L sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a b) -> VecList n (UArray D L sh a) -> UArray D SH sh b Source #

izipM :: (USource D L sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a (IO b)) -> VecList n (UArray D L sh a) -> UArray D SH sh b Source #

Shape sh => DefaultIFusion FS L D SH sh Source # 

Methods

imap :: (USource FS L sh a, USource D SH sh b) => (sh -> a -> b) -> UArray FS L sh a -> UArray D SH sh b Source #

imapM :: (USource FS L sh a, USource D SH sh b) => (sh -> a -> IO b) -> UArray FS L sh a -> UArray D SH sh b Source #

izip2 :: (USource FS L sh a, USource FS L sh b, USource D SH sh c) => (sh -> a -> b -> c) -> UArray FS L sh a -> UArray FS L sh b -> UArray D SH sh c Source #

izip2M :: (USource FS L sh a, USource FS L sh b, USource D SH sh c) => (sh -> a -> b -> IO c) -> UArray FS L sh a -> UArray FS L sh b -> UArray D SH sh c Source #

izip3 :: (USource FS L sh a, USource FS L sh b, USource FS L sh c, USource D SH sh d) => (sh -> a -> b -> c -> d) -> UArray FS L sh a -> UArray FS L sh b -> UArray FS L sh c -> UArray D SH sh d Source #

izip3M :: (USource FS L sh a, USource FS L sh b, USource FS L sh c, USource D SH sh d) => (sh -> a -> b -> c -> IO d) -> UArray FS L sh a -> UArray FS L sh b -> UArray FS L sh c -> UArray D SH sh d Source #

izip :: (USource FS L sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a b) -> VecList n (UArray FS L sh a) -> UArray D SH sh b Source #

izipM :: (USource FS L sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a (IO b)) -> VecList n (UArray FS L sh a) -> UArray D SH sh b Source #

Shape sh => DefaultIFusion F L D SH sh Source # 

Methods

imap :: (USource F L sh a, USource D SH sh b) => (sh -> a -> b) -> UArray F L sh a -> UArray D SH sh b Source #

imapM :: (USource F L sh a, USource D SH sh b) => (sh -> a -> IO b) -> UArray F L sh a -> UArray D SH sh b Source #

izip2 :: (USource F L sh a, USource F L sh b, USource D SH sh c) => (sh -> a -> b -> c) -> UArray F L sh a -> UArray F L sh b -> UArray D SH sh c Source #

izip2M :: (USource F L sh a, USource F L sh b, USource D SH sh c) => (sh -> a -> b -> IO c) -> UArray F L sh a -> UArray F L sh b -> UArray D SH sh c Source #

izip3 :: (USource F L sh a, USource F L sh b, USource F L sh c, USource D SH sh d) => (sh -> a -> b -> c -> d) -> UArray F L sh a -> UArray F L sh b -> UArray F L sh c -> UArray D SH sh d Source #

izip3M :: (USource F L sh a, USource F L sh b, USource F L sh c, USource D SH sh d) => (sh -> a -> b -> c -> IO d) -> UArray F L sh a -> UArray F L sh b -> UArray F L sh c -> UArray D SH sh d Source #

izip :: (USource F L sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a b) -> VecList n (UArray F L sh a) -> UArray D SH sh b Source #

izipM :: (USource F L sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a (IO b)) -> VecList n (UArray F L sh a) -> UArray D SH sh b Source #

Shape sh => DefaultIFusion MB L D SH sh Source # 

Methods

imap :: (USource MB L sh a, USource D SH sh b) => (sh -> a -> b) -> UArray MB L sh a -> UArray D SH sh b Source #

imapM :: (USource MB L sh a, USource D SH sh b) => (sh -> a -> IO b) -> UArray MB L sh a -> UArray D SH sh b Source #

izip2 :: (USource MB L sh a, USource MB L sh b, USource D SH sh c) => (sh -> a -> b -> c) -> UArray MB L sh a -> UArray MB L sh b -> UArray D SH sh c Source #

izip2M :: (USource MB L sh a, USource MB L sh b, USource D SH sh c) => (sh -> a -> b -> IO c) -> UArray MB L sh a -> UArray MB L sh b -> UArray D SH sh c Source #

izip3 :: (USource MB L sh a, USource MB L sh b, USource MB L sh c, USource D SH sh d) => (sh -> a -> b -> c -> d) -> UArray MB L sh a -> UArray MB L sh b -> UArray MB L sh c -> UArray D SH sh d Source #

izip3M :: (USource MB L sh a, USource MB L sh b, USource MB L sh c, USource D SH sh d) => (sh -> a -> b -> c -> IO d) -> UArray MB L sh a -> UArray MB L sh b -> UArray MB L sh c -> UArray D SH sh d Source #

izip :: (USource MB L sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a b) -> VecList n (UArray MB L sh a) -> UArray D SH sh b Source #

izipM :: (USource MB L sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a (IO b)) -> VecList n (UArray MB L sh a) -> UArray D SH sh b Source #

Shape sh => DefaultIFusion B L D SH sh Source # 

Methods

imap :: (USource B L sh a, USource D SH sh b) => (sh -> a -> b) -> UArray B L sh a -> UArray D SH sh b Source #

imapM :: (USource B L sh a, USource D SH sh b) => (sh -> a -> IO b) -> UArray B L sh a -> UArray D SH sh b Source #

izip2 :: (USource B L sh a, USource B L sh b, USource D SH sh c) => (sh -> a -> b -> c) -> UArray B L sh a -> UArray B L sh b -> UArray D SH sh c Source #

izip2M :: (USource B L sh a, USource B L sh b, USource D SH sh c) => (sh -> a -> b -> IO c) -> UArray B L sh a -> UArray B L sh b -> UArray D SH sh c Source #

izip3 :: (USource B L sh a, USource B L sh b, USource B L sh c, USource D SH sh d) => (sh -> a -> b -> c -> d) -> UArray B L sh a -> UArray B L sh b -> UArray B L sh c -> UArray D SH sh d Source #

izip3M :: (USource B L sh a, USource B L sh b, USource B L sh c, USource D SH sh d) => (sh -> a -> b -> c -> IO d) -> UArray B L sh a -> UArray B L sh b -> UArray B L sh c -> UArray D SH sh d Source #

izip :: (USource B L sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a b) -> VecList n (UArray B L sh a) -> UArray D SH sh b Source #

izipM :: (USource B L sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a (IO b)) -> VecList n (UArray B L sh a) -> UArray D SH sh b Source #

Shape sh => IFusion r l D SH sh Source # 

Methods

fimap :: (USource r l sh a, USource D SH sh b) => (sh -> a -> b) -> UArray r l sh a -> UArray D SH sh b Source #

fimapM :: (USource r l sh a, USource D SH sh b) => (sh -> a -> IO b) -> UArray r l sh a -> UArray D SH sh b Source #

fizip2 :: (USource r l sh a, USource r l sh b, USource D SH sh c) => (sh -> a -> b -> c) -> UArray r l sh a -> UArray r l sh b -> UArray D SH sh c Source #

fizip2M :: (USource r l sh a, USource r l sh b, USource D SH sh c) => (sh -> a -> b -> IO c) -> UArray r l sh a -> UArray r l sh b -> UArray D SH sh c Source #

fizip3 :: (USource r l sh a, USource r l sh b, USource r l sh c, USource D SH sh d) => (sh -> a -> b -> c -> d) -> UArray r l sh a -> UArray r l sh b -> UArray r l sh c -> UArray D SH sh d Source #

fizip3M :: (USource r l sh a, USource r l sh b, USource r l sh c, USource D SH sh d) => (sh -> a -> b -> c -> IO d) -> UArray r l sh a -> UArray r l sh b -> UArray r l sh c -> UArray D SH sh d Source #

fizip :: (USource r l sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a b) -> VecList n (UArray r l sh a) -> UArray D SH sh b Source #

fizipM :: (USource r l sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a (IO b)) -> VecList n (UArray r l sh a) -> UArray D SH sh b Source #

(Shape sh, Vector v e) => UVecSource D D SH sh v e Source # 
(Shape sh, Vector v e) => VecRegular D D SH sh v e Source # 

Methods

slices :: UArray D SH sh (v e) -> VecList (Dim v) (UArray D SH sh e) Source #

Load r SH tr SH sh a => RangeLoad r SH tr SH sh a Source # 

Methods

rangeLoadP :: Fill sh a -> Threads -> UArray r SH sh a -> UArray tr SH sh a -> sh -> sh -> IO () Source #

rangeLoadS :: Fill sh a -> UArray r SH sh a -> UArray tr SH sh a -> sh -> sh -> IO () Source #

Load r L tr SH sh a => RangeLoad r L tr SH sh a Source # 

Methods

rangeLoadP :: Fill sh a -> Threads -> UArray r L sh a -> UArray tr SH sh a -> sh -> sh -> IO () Source #

rangeLoadS :: Fill sh a -> UArray r L sh a -> UArray tr SH sh a -> sh -> sh -> IO () Source #

Load r SH tr L sh a => RangeLoad r SH tr L sh a Source # 

Methods

rangeLoadP :: Fill sh a -> Threads -> UArray r SH sh a -> UArray tr L sh a -> sh -> sh -> IO () Source #

rangeLoadS :: Fill sh a -> UArray r SH sh a -> UArray tr L sh a -> sh -> sh -> IO () Source #

(USource r SH sh a, UTarget tr SH sh a) => Load r SH tr SH sh a Source # 

Associated Types

type LoadIndex SH SH sh :: * Source #

Methods

loadP :: Fill (LoadIndex SH SH sh) a -> Threads -> UArray r SH sh a -> UArray tr SH sh a -> IO () Source #

loadS :: Fill (LoadIndex SH SH sh) a -> UArray r SH sh a -> UArray tr SH sh a -> IO () Source #

(USource r L sh a, UTarget tr SH sh a) => Load r L tr SH sh a Source # 

Associated Types

type LoadIndex L SH sh :: * Source #

Methods

loadP :: Fill (LoadIndex L SH sh) a -> Threads -> UArray r L sh a -> UArray tr SH sh a -> IO () Source #

loadS :: Fill (LoadIndex L SH sh) a -> UArray r L sh a -> UArray tr SH sh a -> IO () Source #

(USource r SH sh a, UTarget tr L sh a) => Load r SH tr L sh a Source # 

Associated Types

type LoadIndex SH L sh :: * Source #

Methods

loadP :: Fill (LoadIndex SH L sh) a -> Threads -> UArray r SH sh a -> UArray tr L sh a -> IO () Source #

loadS :: Fill (LoadIndex SH L sh) a -> UArray r SH sh a -> UArray tr L sh a -> IO () Source #

(VecLoad r slr SH tr tslr SH sh v v2 e, RangeLoad slr SH tslr SH sh e) => RangeVecLoad r slr SH tr tslr SH sh v v2 e Source # 

Methods

rangeLoadSlicesP :: Fill sh e -> Threads -> UArray r SH sh (v e) -> UArray tr SH sh (v2 e) -> sh -> sh -> IO () Source #

rangeLoadSlicesS :: Fill sh e -> UArray r SH sh (v e) -> UArray tr SH sh (v2 e) -> sh -> sh -> IO () Source #

(VecLoad r slr L tr tslr SH sh v v2 e, RangeLoad slr L tslr SH sh e) => RangeVecLoad r slr L tr tslr SH sh v v2 e Source # 

Methods

rangeLoadSlicesP :: Fill sh e -> Threads -> UArray r L sh (v e) -> UArray tr SH sh (v2 e) -> sh -> sh -> IO () Source #

rangeLoadSlicesS :: Fill sh e -> UArray r L sh (v e) -> UArray tr SH sh (v2 e) -> sh -> sh -> IO () Source #

(VecLoad r slr SH tr tslr L sh v v2 e, RangeLoad slr SH tslr L sh e) => RangeVecLoad r slr SH tr tslr L sh v v2 e Source # 

Methods

rangeLoadSlicesP :: Fill sh e -> Threads -> UArray r SH sh (v e) -> UArray tr L sh (v2 e) -> sh -> sh -> IO () Source #

rangeLoadSlicesS :: Fill sh e -> UArray r SH sh (v e) -> UArray tr L sh (v2 e) -> sh -> sh -> IO () Source #

(UVecSource r slr SH sh v e, UVecTarget tr tslr SH sh v2 e, Load slr SH tslr SH sh e, (~) * (Dim v) (Dim v2)) => VecLoad r slr SH tr tslr SH sh v v2 e Source # 

Methods

loadSlicesP :: Fill (LoadIndex SH SH sh) e -> Threads -> UArray r SH sh (v e) -> UArray tr SH sh (v2 e) -> IO () Source #

loadSlicesS :: Fill (LoadIndex SH SH sh) e -> UArray r SH sh (v e) -> UArray tr SH sh (v2 e) -> IO () Source #

(UVecSource r slr L sh v e, UVecTarget tr tslr SH sh v2 e, Load slr L tslr SH sh e, (~) * (Dim v) (Dim v2)) => VecLoad r slr L tr tslr SH sh v v2 e Source # 

Methods

loadSlicesP :: Fill (LoadIndex L SH sh) e -> Threads -> UArray r L sh (v e) -> UArray tr SH sh (v2 e) -> IO () Source #

loadSlicesS :: Fill (LoadIndex L SH sh) e -> UArray r L sh (v e) -> UArray tr SH sh (v2 e) -> IO () Source #

(UVecSource r slr SH sh v e, UVecTarget tr tslr L sh v2 e, Load slr SH tslr L sh e, (~) * (Dim v) (Dim v2)) => VecLoad r slr SH tr tslr L sh v v2 e Source # 

Methods

loadSlicesP :: Fill (LoadIndex SH L sh) e -> Threads -> UArray r SH sh (v e) -> UArray tr L sh (v2 e) -> IO () Source #

loadSlicesS :: Fill (LoadIndex SH L sh) e -> UArray r SH sh (v e) -> UArray tr L sh (v2 e) -> IO () Source #

(DefaultIFusion r l D SH sh, IFusion (SE r) l D SH sh) => DefaultIFusion (SE r) l D SH sh Source # 

Methods

imap :: (USource (SE r) l sh a, USource D SH sh b) => (sh -> a -> b) -> UArray (SE r) l sh a -> UArray D SH sh b Source #

imapM :: (USource (SE r) l sh a, USource D SH sh b) => (sh -> a -> IO b) -> UArray (SE r) l sh a -> UArray D SH sh b Source #

izip2 :: (USource (SE r) l sh a, USource (SE r) l sh b, USource D SH sh c) => (sh -> a -> b -> c) -> UArray (SE r) l sh a -> UArray (SE r) l sh b -> UArray D SH sh c Source #

izip2M :: (USource (SE r) l sh a, USource (SE r) l sh b, USource D SH sh c) => (sh -> a -> b -> IO c) -> UArray (SE r) l sh a -> UArray (SE r) l sh b -> UArray D SH sh c Source #

izip3 :: (USource (SE r) l sh a, USource (SE r) l sh b, USource (SE r) l sh c, USource D SH sh d) => (sh -> a -> b -> c -> d) -> UArray (SE r) l sh a -> UArray (SE r) l sh b -> UArray (SE r) l sh c -> UArray D SH sh d Source #

izip3M :: (USource (SE r) l sh a, USource (SE r) l sh b, USource (SE r) l sh c, USource D SH sh d) => (sh -> a -> b -> c -> IO d) -> UArray (SE r) l sh a -> UArray (SE r) l sh b -> UArray (SE r) l sh c -> UArray D SH sh d Source #

izip :: (USource (SE r) l sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a b) -> VecList n (UArray (SE r) l sh a) -> UArray D SH sh b Source #

izipM :: (USource (SE r) l sh a, USource D SH sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a (IO b)) -> VecList n (UArray (SE r) l sh a) -> UArray D SH sh b Source #

Shape sh => NFData (UArray DT SH sh a) # 

Methods

rnf :: UArray DT SH sh a -> () #

Shape sh => NFData (UArray D SH sh a) # 

Methods

rnf :: UArray D SH sh a -> () #

data UArray DT SH Source # 
data UArray DT SH = ShapeDelayedTarget !sh (IO ()) (IO ()) (sh -> a -> IO ())
data UArray D SH Source # 
data UArray D SH = ShapeDelayed !sh (IO ()) (IO ()) (sh -> IO a)
type LoadIndex SH SH sh Source # 
type LoadIndex SH SH sh = sh
type LoadIndex SH L sh Source # 
type LoadIndex SH L sh = sh
type LoadIndex L SH sh Source # 
type LoadIndex L SH sh = sh

fromFunction Source #

Arguments

:: Shape sh 
=> sh

Extent of array

-> (sh -> IO a)

Indexing function

-> UArray D SH sh a

Result array

Wrap indexing function into delayed representation.

Use this function carefully, don't implement through it something that has specialized implementation in the library (mapping, zipping, etc).

Suitable to obtain arrays of constant element, of indices (fromFunction sh return), and so on.

fromLinearFunction Source #

Arguments

:: Shape sh 
=> sh

Extent of array

-> (Int -> IO a)

Linear ndexing function

-> UArray D L sh a

Result array

delay :: (USource r l sh a, USource D l sh a, Fusion r D l sh) => UArray r l sh a -> UArray D l sh a Source #

Load type preserving wrapping arbirtary array into Delayed representation.

delayShaped :: USource r l sh a => UArray r l sh a -> UArray D SH sh a Source #

Wraps (index arr) into Delayed representation. Normally you shouldn't need to use this function. It may be dangerous for performance, because preferred Loading type of source array is ignored.

delayLinear :: USource r l sh a => UArray r l sh a -> UArray D L sh a Source #

Const arrays

linearConst :: Shape sh => sh -> a -> UArray D L sh a Source #

shapedConst :: Shape sh => sh -> a -> UArray D SH sh a Source #