ddc-core-flow- Disciplined Disciple Compiler data flow compiler.

Safe HaskellNone




type Edge = (Name, Bool)Source

Graph for function Each node is a binding, edges are dependencies, and the bool is whether the node's output can be fused or contracted. For example, filter and map dependencies can be contracted, but a fold cannot as it must consume the entire stream before producing output.

graphTopoOrder :: Graph -> [Name]Source

Find topological ordering of DAG Does not check for cycles - really must be a DAG!

invertMap :: (Ord k, Ord v) => Map k v -> Map v [k]Source

mlookup :: Ord k => String -> Map k v -> k -> vSource