module Data.Repa.Flow.Auto.Select
( select_i, select_o
, discard_i, discard_o
, mask_i, mask_o)
where
import Data.Repa.Array as A
import Data.Repa.Flow.Auto.Base as F
import Data.Repa.Scalar.Singleton.Nat as D
import Data.Repa.Scalar.Product as D
import qualified Data.Repa.Flow.Generic as G
#include "repa-array.h"
select_i
:: ( Select n (Array fs)
, Select' n (Array fs) ~ Array (Select' n fs))
=> Nat n
-> Sources fs
-> IO (Sources (Select' n fs))
select_i n ss
= G.map_i (select n) ss
select_o
:: ( Select n (Array fs)
, Select' n (Array fs) ~ Array (Select' n fs))
=> Nat n
-> Sinks (Select' n fs)
-> IO (Sinks fs)
select_o n ss
= G.map_o (select n) ss
discard_i
:: ( Discard n (Array fs)
, Discard' n (Array fs) ~ Array (Discard' n fs))
=> Nat n
-> Sources fs
-> IO (Sources (Discard' n fs))
discard_i n ss
= G.map_i (discard n) ss
discard_o
:: ( Discard n (Array fs)
, Discard' n (Array fs) ~ Array (Discard' n fs))
=> Nat n
-> Sinks (Discard' n fs)
-> IO (Sinks fs)
discard_o n ss
= G.map_o (discard n) ss
mask_i :: ( Mask ms (Array fs)
, Mask' ms (Array fs) ~ Array (Mask' ms fs))
=> ms
-> Sources fs
-> IO (Sources (Mask' ms fs))
mask_i ms ss
= G.map_i (mask ms) ss
mask_o :: ( Mask ms (Array fs)
, Mask' ms (Array fs) ~ Array (Mask' ms fs))
=> ms
-> Sinks (Mask' ms fs)
-> IO (Sinks fs)
mask_o ms ss
= G.map_o (mask ms) ss