repa-scalar-4.2.4.0: Scalar data types and conversions.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.Repa.Scalar.Product

Synopsis

Product type

data a :*: b infixr 9 Source #

A strict product type, written infix.

Constructors

!a :*: !b infixr 9 

Instances

Instances details
IsProdList ts => Discard 'Z (t1 :*: ts) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

Associated Types

type Discard' 'Z (t1 :*: ts) Source #

Methods

discard :: Nat 'Z -> (t1 :*: ts) -> Discard' 'Z (t1 :*: ts) Source #

IsProdList ts => Select 'Z (t1 :*: ts) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

Associated Types

type Select' 'Z (t1 :*: ts) Source #

Methods

select :: Nat 'Z -> (t1 :*: ts) -> Select' 'Z (t1 :*: ts) Source #

(Unbox a, Unbox b) => Vector Vector (a :*: b) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

Methods

basicUnsafeFreeze :: Mutable Vector s (a :*: b) -> ST s (Vector (a :*: b))

basicUnsafeThaw :: Vector (a :*: b) -> ST s (Mutable Vector s (a :*: b))

basicLength :: Vector (a :*: b) -> Int

basicUnsafeSlice :: Int -> Int -> Vector (a :*: b) -> Vector (a :*: b)

basicUnsafeIndexM :: Vector (a :*: b) -> Int -> Box (a :*: b)

basicUnsafeCopy :: Mutable Vector s (a :*: b) -> Vector (a :*: b) -> ST s ()

elemseq :: Vector (a :*: b) -> (a :*: b) -> b0 -> b0

(Unbox a, Unbox b) => MVector MVector (a :*: b) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

Methods

basicLength :: MVector s (a :*: b) -> Int

basicUnsafeSlice :: Int -> Int -> MVector s (a :*: b) -> MVector s (a :*: b)

basicOverlaps :: MVector s (a :*: b) -> MVector s (a :*: b) -> Bool

basicUnsafeNew :: Int -> ST s (MVector s (a :*: b))

basicInitialize :: MVector s (a :*: b) -> ST s ()

basicUnsafeReplicate :: Int -> (a :*: b) -> ST s (MVector s (a :*: b))

basicUnsafeRead :: MVector s (a :*: b) -> Int -> ST s (a :*: b)

basicUnsafeWrite :: MVector s (a :*: b) -> Int -> (a :*: b) -> ST s ()

basicClear :: MVector s (a :*: b) -> ST s ()

basicSet :: MVector s (a :*: b) -> (a :*: b) -> ST s ()

basicUnsafeCopy :: MVector s (a :*: b) -> MVector s (a :*: b) -> ST s ()

basicUnsafeMove :: MVector s (a :*: b) -> MVector s (a :*: b) -> ST s ()

basicUnsafeGrow :: MVector s (a :*: b) -> Int -> ST s (MVector s (a :*: b))

Functor ((:*:) a) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

Methods

fmap :: (a0 -> b) -> (a :*: a0) -> a :*: b #

(<$) :: a0 -> (a :*: b) -> a :*: a0 #

Discard n ts => Discard ('S n) (t1 :*: ts) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

Associated Types

type Discard' ('S n) (t1 :*: ts) Source #

Methods

discard :: Nat ('S n) -> (t1 :*: ts) -> Discard' ('S n) (t1 :*: ts) Source #

Select n ts => Select ('S n) (t1 :*: ts) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

Associated Types

type Select' ('S n) (t1 :*: ts) Source #

Methods

select :: Nat ('S n) -> (t1 :*: ts) -> Select' ('S n) (t1 :*: ts) Source #

(Show a, Show b) => Show (a :*: b) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

Methods

showsPrec :: Int -> (a :*: b) -> ShowS #

show :: (a :*: b) -> String #

showList :: [a :*: b] -> ShowS #

(Eq a, Eq b) => Eq (a :*: b) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

Methods

(==) :: (a :*: b) -> (a :*: b) -> Bool #

(/=) :: (a :*: b) -> (a :*: b) -> Bool #

(IsKeyValues p, IsKeyValues ps, Keys p ~ Keys ps) => IsKeyValues (p :*: ps) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

Associated Types

type Keys (p :*: ps) Source #

type Values (p :*: ps) Source #

Methods

keys :: (p :*: ps) -> [Keys (p :*: ps)] Source #

values :: (p :*: ps) -> Values (p :*: ps) Source #

IsProdList fs => IsProdList (f :*: fs) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

Methods

isProdList :: (f :*: fs) -> Bool Source #

(Unbox a, Unbox b) => Unbox (a :*: b) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

Mask ms ts => Mask (Drop :*: ms) (t1 :*: ts) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

Associated Types

type Mask' (Drop :*: ms) (t1 :*: ts) Source #

Methods

mask :: (Drop :*: ms) -> (t1 :*: ts) -> Mask' (Drop :*: ms) (t1 :*: ts) Source #

Mask ms ts => Mask (Keep :*: ms) (t1 :*: ts) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

Associated Types

type Mask' (Keep :*: ms) (t1 :*: ts) Source #

Methods

mask :: (Keep :*: ms) -> (t1 :*: ts) -> Mask' (Keep :*: ms) (t1 :*: ts) Source #

type Discard' 'Z (t1 :*: ts) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

type Discard' 'Z (t1 :*: ts) = ts
type Select' 'Z (t1 :*: ts) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

type Select' 'Z (t1 :*: ts) = t1
data MVector s (a :*: b) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

data MVector s (a :*: b) = MV_Prod !Int !(MVector s a) !(MVector s b)
type Discard' ('S n) (t1 :*: ts) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

type Discard' ('S n) (t1 :*: ts) = t1 :*: Discard' n ts
type Select' ('S n) (t1 :*: ts) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

type Select' ('S n) (t1 :*: ts) = Select' n ts
type Keys (p :*: ps) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

type Keys (p :*: ps) = Keys p
type Values (p :*: ps) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

type Values (p :*: ps) = Values p :*: Values ps
data Vector (a :*: b) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

data Vector (a :*: b) = V_Prod !Int !(Vector a) !(Vector b)
type Mask' (Drop :*: ms) (t1 :*: ts) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

type Mask' (Drop :*: ms) (t1 :*: ts) = Mask' ms ts
type Mask' (Keep :*: ms) (t1 :*: ts) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

type Mask' (Keep :*: ms) (t1 :*: ts) = t1 :*: Mask' ms ts

class IsProdList p where Source #

Sequences of products that form a valid list, using () for the nil value.

Methods

isProdList :: p -> Bool Source #

Instances

Instances details
IsProdList () Source # 
Instance details

Defined in Data.Repa.Scalar.Product

Methods

isProdList :: () -> Bool Source #

IsProdList fs => IsProdList (f :*: fs) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

Methods

isProdList :: (f :*: fs) -> Bool Source #

class IsKeyValues p where Source #

Sequences of products and tuples that form hetrogeneous key-value pairs.

Associated Types

type Keys p Source #

type Values p Source #

Methods

keys :: p -> [Keys p] Source #

Get a cons-list of all the keys.

values :: p -> Values p Source #

Get a heterogeneous product-list of all the values.

Instances

Instances details
(IsKeyValues p, IsKeyValues ps, Keys p ~ Keys ps) => IsKeyValues (p :*: ps) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

Associated Types

type Keys (p :*: ps) Source #

type Values (p :*: ps) Source #

Methods

keys :: (p :*: ps) -> [Keys (p :*: ps)] Source #

values :: (p :*: ps) -> Values (p :*: ps) Source #

IsKeyValues (k, v) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

Associated Types

type Keys (k, v) Source #

type Values (k, v) Source #

Methods

keys :: (k, v) -> [Keys (k, v)] Source #

values :: (k, v) -> Values (k, v) Source #

Selecting

class IsProdList t => Select (n :: N) t where Source #

Associated Types

type Select' n t Source #

Methods

select :: Nat n -> t -> Select' n t Source #

Return the element with this index from a product list.

Instances

Instances details
IsProdList ts => Select 'Z (t1 :*: ts) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

Associated Types

type Select' 'Z (t1 :*: ts) Source #

Methods

select :: Nat 'Z -> (t1 :*: ts) -> Select' 'Z (t1 :*: ts) Source #

Select n ts => Select ('S n) (t1 :*: ts) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

Associated Types

type Select' ('S n) (t1 :*: ts) Source #

Methods

select :: Nat ('S n) -> (t1 :*: ts) -> Select' ('S n) (t1 :*: ts) Source #

Discarding

class IsProdList t => Discard (n :: N) t where Source #

Associated Types

type Discard' n t Source #

Methods

discard :: Nat n -> t -> Discard' n t Source #

Discard the element with this index from a product list.

Instances

Instances details
IsProdList ts => Discard 'Z (t1 :*: ts) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

Associated Types

type Discard' 'Z (t1 :*: ts) Source #

Methods

discard :: Nat 'Z -> (t1 :*: ts) -> Discard' 'Z (t1 :*: ts) Source #

Discard n ts => Discard ('S n) (t1 :*: ts) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

Associated Types

type Discard' ('S n) (t1 :*: ts) Source #

Methods

discard :: Nat ('S n) -> (t1 :*: ts) -> Discard' ('S n) (t1 :*: ts) Source #

Masking

class (IsProdList m, IsProdList t) => Mask m t where Source #

Class of data types that can have parts masked out.

Associated Types

type Mask' m t Source #

Methods

mask :: m -> t -> Mask' m t Source #

Mask out some component of a type.

mask (Keep :*: Drop  :*: Keep :*: ()) 
     (1    :*: "foo" :*: 'a'  :*: ())   =   (1 :*: 'a' :*: ())

mask (Drop :*: Drop  :*: Drop :*: ()) 
     (1    :*: "foo" :*: 'a'  :*: ())   =   ()

Instances

Instances details
Mask () () Source # 
Instance details

Defined in Data.Repa.Scalar.Product

Associated Types

type Mask' () () Source #

Methods

mask :: () -> () -> Mask' () () Source #

Mask ms ts => Mask (Drop :*: ms) (t1 :*: ts) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

Associated Types

type Mask' (Drop :*: ms) (t1 :*: ts) Source #

Methods

mask :: (Drop :*: ms) -> (t1 :*: ts) -> Mask' (Drop :*: ms) (t1 :*: ts) Source #

Mask ms ts => Mask (Keep :*: ms) (t1 :*: ts) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

Associated Types

type Mask' (Keep :*: ms) (t1 :*: ts) Source #

Methods

mask :: (Keep :*: ms) -> (t1 :*: ts) -> Mask' (Keep :*: ms) (t1 :*: ts) Source #

data Keep Source #

Singleton to indicate a field that should be kept.

Constructors

Keep 

Instances

Instances details
Mask ms ts => Mask (Keep :*: ms) (t1 :*: ts) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

Associated Types

type Mask' (Keep :*: ms) (t1 :*: ts) Source #

Methods

mask :: (Keep :*: ms) -> (t1 :*: ts) -> Mask' (Keep :*: ms) (t1 :*: ts) Source #

type Mask' (Keep :*: ms) (t1 :*: ts) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

type Mask' (Keep :*: ms) (t1 :*: ts) = t1 :*: Mask' ms ts

data Drop Source #

Singleton to indicate a field that should be dropped.

Constructors

Drop 

Instances

Instances details
Mask ms ts => Mask (Drop :*: ms) (t1 :*: ts) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

Associated Types

type Mask' (Drop :*: ms) (t1 :*: ts) Source #

Methods

mask :: (Drop :*: ms) -> (t1 :*: ts) -> Mask' (Drop :*: ms) (t1 :*: ts) Source #

type Mask' (Drop :*: ms) (t1 :*: ts) Source # 
Instance details

Defined in Data.Repa.Scalar.Product

type Mask' (Drop :*: ms) (t1 :*: ts) = Mask' ms ts