5 module Data.HList.Graph
15 import Data.HList.Prelude
16 import Types.Data.Bool
18 -- Graph is a map from node ID to context
19 data Context preNodes node sucNodes
23 type Empty = Graph Nil
27 type instance IsEmpty (Graph Nil) = True
28 type instance IsEmpty (Graph (Cons x xs)) = False
38 instance NodeSet ns => NodeSet (Cons n ns)
41 class NoDuplicates ids => NodeIDSet ids
42 instance NodeIDSet Nil
43 instance (OccursNot id ids, NodeIDSet ids) => NodeIDSet (Cons id ids)
45 -- LPath (list of labeled node IDs)
48 instance LPath p => LPath (Cons (Cons l id) p)
51 class NodeIDSet (LinksFrom n) => Node n
58 instance ApplyT NodeIDA n where
59 type Apply NodeIDA n = NodeID n
62 class ( NodeSet (Nodes g)
63 , NoDuplicates (Map NodeIDA g)