module Edges.Potoki.Produce where import Edges.Prelude import Edges.Types import Edges.NodeCounts () import Potoki.Produce import qualified PrimitiveExtras.PrimMultiArray as PrimMultiArray 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 (PrimMultiArray.outerLength 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