module Data.Repa.Flow.Chunked
( module Data.Repa.Flow.States
, Sources, Sinks
, Flow
, drainS
, consumeS
, fromList
, fromLists
, toList1
, toLists1
, finalize_i, finalize_o
, replicates_i
, smap_i, smap_o
, szipWith_ii
, process_i
, unfolds_i
, StepUnfold (..)
, head_i
, groupsBy_i, GroupsDict
, foldlS, foldlAllS
, folds_i, FoldsDict
, watch_i, watch_o
, trigger_o
, ignore_o
, abandon_o)
where
import Data.Repa.Flow.Chunked.Base
import Data.Repa.Flow.Chunked.Map
import Data.Repa.Flow.Chunked.Fold
import Data.Repa.Flow.Chunked.Folds
import Data.Repa.Flow.Chunked.Generic
import Data.Repa.Flow.Chunked.Groups
import Data.Repa.Flow.Chunked.Process
import Data.Repa.Flow.Chunked.Replicate
import Data.Repa.Flow.States
import qualified Data.Repa.Array.Generic as A
import qualified Data.Repa.Flow.Generic as G
#include "repa-flow.h"
drainS :: (Next i, Monad m)
=> Sources i m r a -> Sinks i m r a -> m ()
drainS = G.drainS
consumeS :: (Next i, Monad m, A.Bulk r a)
=> Sources i m r a -> (i -> a -> m ()) -> m ()
consumeS ss eatElem
= G.consumeS eatChunk ss
where
eatChunk ix arr
= mapM_ (eatElem ix) $ A.toList arr