edges-0.4: library/Edges/Potoki/Produce.hs
module Edges.Potoki.Produce
where
import Edges.Prelude
import Edges.Types
import Edges.NodeCounts ()
import Potoki.Produce
import qualified PrimitiveExtras.Pure as A
import qualified Potoki.Transform as B
import qualified Potoki.Cereal.Produce as C
nodes :: Edges a x -> Produce (Node a)
nodes (Edges _ pma) =
coerce $
enumInRange 0 (pred (A.primMultiArrayOuterLength pma))
nodeCounts :: Edges a x -> (Node a -> NodeCounts b) -> Produce (Node a, NodeCounts b)
nodeCounts edges nodeCounts =
transform (B.concurrently numCapabilities (arr (\ node -> case nodeCounts node of x -> (node, x)))) $
nodes edges
nodeCountsFromFile :: FilePath -> Produce (Either IOException (Either Text (Node a, NodeCounts b)))
nodeCountsFromFile file =
C.fileDecoded file