From 7f32d8e4edd315ab4039432ca5b35c7eaa94f9ba Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Sun, 7 Apr 2019 20:16:02 +0100 Subject: Add partial documentation --- src/VeriFuzz/Circuit/Internal.hs | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/VeriFuzz/Circuit/Internal.hs') diff --git a/src/VeriFuzz/Circuit/Internal.hs b/src/VeriFuzz/Circuit/Internal.hs index 8a4cf4a..3a7346f 100644 --- a/src/VeriFuzz/Circuit/Internal.hs +++ b/src/VeriFuzz/Circuit/Internal.hs @@ -23,12 +23,19 @@ import Data.Graph.Inductive (Graph, Node) import qualified Data.Graph.Inductive as G import qualified Data.Text as T +-- | Convert an integer into a label. +-- +-- >>> fromNode 5 +-- "w5" fromNode :: Int -> T.Text fromNode node = T.pack $ "w" <> show node +-- | General function which runs 'filter' over a graph. filterGr :: (Graph gr) => gr n e -> (Node -> Bool) -> [Node] filterGr graph f = filter f $ G.nodes graph +-- | Takes two functions that return an 'Int', and compares there results to 0 +-- and not 0 respectively. This result is returned. only :: (Graph gr) => gr n e @@ -38,8 +45,11 @@ only -> Bool only graph fun1 fun2 n = fun1 graph n == 0 && fun2 graph n /= 0 +-- | Returns all the input nodes to a graph, which means nodes that do not have +-- an input themselves. inputs :: (Graph gr) => gr n e -> [Node] inputs graph = filterGr graph $ only graph G.indeg G.outdeg +-- | Returns all the output nodes to a graph, similar to the 'inputs' function. outputs :: (Graph gr) => gr n e -> [Node] outputs graph = filterGr graph $ only graph G.outdeg G.indeg -- cgit