diff options
author | Yann Herklotz <git@ymhg.org> | 2019-04-07 20:16:02 +0100 |
---|---|---|
committer | Yann Herklotz <git@ymhg.org> | 2019-04-07 20:16:02 +0100 |
commit | 7f32d8e4edd315ab4039432ca5b35c7eaa94f9ba (patch) | |
tree | 72ee33929209b42de6aad4a4e9e3a60962438a66 | |
parent | 4b5401ef3400413be0559dfa17718611822fc4c6 (diff) | |
download | verismith-7f32d8e4edd315ab4039432ca5b35c7eaa94f9ba.tar.gz verismith-7f32d8e4edd315ab4039432ca5b35c7eaa94f9ba.zip |
Add partial documentation
-rw-r--r-- | src/VeriFuzz/Circuit/Base.hs | 2 | ||||
-rw-r--r-- | src/VeriFuzz/Circuit/Internal.hs | 10 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/VeriFuzz/Circuit/Base.hs b/src/VeriFuzz/Circuit/Base.hs index 6b9f725..ed63105 100644 --- a/src/VeriFuzz/Circuit/Base.hs +++ b/src/VeriFuzz/Circuit/Base.hs @@ -30,8 +30,10 @@ data Gate = And -- | Newtype for the Circuit which implements a Graph from fgl. newtype Circuit = Circuit { getCircuit :: Gr Gate () } +-- | Newtype for a node in the circuit, which is an 'LNode Gate'. newtype CNode = CNode { getCNode :: LNode Gate } +-- | Newtype for a named edge which is empty, as it does not need a label. newtype CEdge = CEdge { getCEdge :: LEdge () } instance Random Gate where 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 |