yarr-1.4.0.2: Yet another array library

Safe HaskellNone
LanguageHaskell98

Data.Yarr.Fusion

Description

Fusion type system. Use re-exported in Data.Yarr.Flow functions.

Synopsis

Documentation

class Fusion r fr l sh where Source #

Generalized, non-injective version of DefaultFusion. Used internally.

Minimum complete defenition: fmapM, fzip2M, fzip3M and fzipM.

The class doesn't have vector counterpart, it's role play top-level functions from Data.Yarr.Repr.Separate module.

Minimal complete definition

fmapM, fzip2M, fzip3M, fzipM

Methods

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

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

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

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

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

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

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

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

Instances

IFusion r l fr l sh => Fusion r fr l sh Source # 

Methods

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

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

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

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

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

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

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

fzipM :: (USource r l sh a, USource fr l sh b, Arity n, (* ~ n) (S n0)) => Fun n a (IO b) -> VecList n (UArray r l sh a) -> UArray fr 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 #

class Fusion r fr l sh => DefaultFusion r fr l sh | r -> fr where Source #

This class abstracts pair of array types, which could be (preferably should be) mapped (fused) one to another. Injective version of Fusion class.

Parameters:

  • r - source array representation. It determines result representation.
  • fr (fused repr) - result (fused) array representation. Result array isn't indeed presented in memory, finally it should be computed or Loaded to Manifest representation.
  • l - load type, common for source and fused arrays
  • sh - shape of arrays

All functions are already defined, using non-injective versions from Fusion class.

The class doesn't have vector counterpart, it's role play top-level functions from Data.Yarr.Repr.Separate module.

Methods

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

O(1) Pure element mapping.

Main basic "map" in Yarr.

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

O(1) Monadic element mapping.

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

O(1) Zipping 2 arrays of the same type indexes and shapes.

Example:

let productArr = dzip2 (*) arr1 arr2

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

O(1) Monadic version of dzip2 function.

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

O(1) Zipping 3 arrays of the same type indexes and shapes.

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

O(1) Monadic version of dzip3 function.

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

O(1) Generalized element zipping with pure function. Zipper function is wrapped in Fun for injectivity.

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

O(1) Monadic version of dzip function.

Instances

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 #

Shape sh => DefaultFusion CV CV CVL sh Source # 

Methods

dmap :: (USource CV CVL sh a, USource CV CVL sh b) => (a -> b) -> UArray CV CVL sh a -> UArray CV CVL sh b Source #

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

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

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

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

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

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

dzipM :: (USource CV CVL sh a, USource CV CVL sh b, Arity n, (* ~ n) (S n0)) => Fun n a (IO b) -> VecList n (UArray CV CVL sh a) -> UArray CV CVL sh b 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 #

class PreferredWorkIndex fl sh sh => IFusion r l fr fl sh | r l fr -> fl where Source #

Like Fusion, for mappings/zippings with array index. Used to define functions in DefaultIFusion.

Minimum complete defenition: fimapM, fizip2M, fizip3M and fizipM.

The class doesn't have vector counterpart.

Minimal complete definition

fimapM, fizip2M, fizip3M, fizipM

Methods

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

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

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

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

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

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

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

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

Instances

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 => IFusion CV CVL CV CVL sh Source # 

Methods

fimap :: (USource CV CVL sh a, USource CV CVL sh b) => (sh -> a -> b) -> UArray CV CVL sh a -> UArray CV CVL sh b Source #

fimapM :: (USource CV CVL sh a, USource CV CVL sh b) => (sh -> a -> IO b) -> UArray CV CVL sh a -> UArray CV CVL sh b Source #

fizip2 :: (USource CV CVL sh a, USource CV CVL sh b, USource CV CVL sh c) => (sh -> a -> b -> c) -> UArray CV CVL sh a -> UArray CV CVL sh b -> UArray CV CVL sh c Source #

fizip2M :: (USource CV CVL sh a, USource CV CVL sh b, USource CV CVL sh c) => (sh -> a -> b -> IO c) -> UArray CV CVL sh a -> UArray CV CVL sh b -> UArray CV CVL sh c Source #

fizip3 :: (USource CV CVL sh a, USource CV CVL sh b, USource CV CVL sh c, USource CV CVL sh d) => (sh -> a -> b -> c -> d) -> UArray CV CVL sh a -> UArray CV CVL sh b -> UArray CV CVL sh c -> UArray CV CVL sh d Source #

fizip3M :: (USource CV CVL sh a, USource CV CVL sh b, USource CV CVL sh c, USource CV CVL sh d) => (sh -> a -> b -> c -> IO d) -> UArray CV CVL sh a -> UArray CV CVL sh b -> UArray CV CVL sh c -> UArray CV CVL sh d Source #

fizip :: (USource CV CVL sh a, USource CV CVL sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a b) -> VecList n (UArray CV CVL sh a) -> UArray CV CVL sh b Source #

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

class IFusion r l fr fl sh => DefaultIFusion r l fr fl sh | r l -> fr where Source #

Like DefaultFusion, this class abstracts the pair array types, which should be fused one to another on maps and zips which accept index of element (several elements for zips) in array (arrays).

Parameters:

  • r - source array representation. Determines result representation.
  • l - source load type
  • fr (fused repr) - result (fused) array representation. Result array isn't indeed presented in memory, finally it should be computed or Loaded to Manifest representation.
  • fl - result, "shaped" load type
  • sh - shape of arrays

All functions are already defined, using non-injective versions from IFusion class.

The class doesn't have vector counterpart.

Methods

imap :: (USource r l sh a, USource fr fl sh b) => (sh -> a -> b) -> UArray r l sh a -> UArray fr fl sh b Source #

O(1) Pure element mapping with array index.

imapM :: (USource r l sh a, USource fr fl sh b) => (sh -> a -> IO b) -> UArray r l sh a -> UArray fr fl sh b Source #

O(1) Monadic element mapping with index.

izip2 :: (USource r l sh a, USource r l sh b, USource fr fl sh c) => (sh -> a -> b -> c) -> UArray r l sh a -> UArray r l sh b -> UArray fr fl sh c Source #

O(1) Pure zipping of 2 arrays with index.

izip2M :: (USource r l sh a, USource r l sh b, USource fr fl sh c) => (sh -> a -> b -> IO c) -> UArray r l sh a -> UArray r l sh b -> UArray fr fl sh c Source #

O(1) Monadic zipping of 2 arrays with index.

izip3 :: (USource r l sh a, USource r l sh b, USource r l sh c, USource fr fl sh d) => (sh -> a -> b -> c -> d) -> UArray r l sh a -> UArray r l sh b -> UArray r l sh c -> UArray fr fl sh d Source #

O(1) Pure zipping of 3 arrays with index.

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

O(1) Monadic zipping of 3 arrays with index.

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

O(1) Generalized pure element zipping with index in arrays. Zipper function is wrapped in Fun for injectivity.

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

O(1) Monadic version of izip function.

Instances

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 => DefaultIFusion CV CVL CV CVL sh Source # 

Methods

imap :: (USource CV CVL sh a, USource CV CVL sh b) => (sh -> a -> b) -> UArray CV CVL sh a -> UArray CV CVL sh b Source #

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

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

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

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

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

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

izipM :: (USource CV CVL sh a, USource CV CVL sh b, Arity n, (* ~ n) (S n0)) => (sh -> Fun n a (IO b)) -> VecList n (UArray CV CVL sh a) -> UArray CV CVL 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 #