]> gitweb @ CieloNegro.org - hs-rrdtool.git/blobdiff - Data/HList/Graph.hs
working on graph...
[hs-rrdtool.git] / Data / HList / Graph.hs
index ee5f613f1d5b4daea8ff4ed47dad0d643d31bb54..f31659ca4671b660c95b88b3d4cfae3a21e73e18 100644 (file)
@@ -1,12 +1,17 @@
 {-# LANGUAGE
+  EmptyDataDecls,
   FlexibleContexts,
   FlexibleInstances,
+  MultiParamTypeClasses,
   TypeFamilies
   #-}
 module Data.HList.Graph
     ( HNodeSet
+    , HNodeIDSet
     , HNode(..)
     , HGraph(..)
+
+    , HNodeIDA
     )
     where
 
@@ -17,17 +22,28 @@ class    HNodeSet ns
 instance HNodeSet HNil
 instance HNodeSet ns => HNodeSet (HCons n ns)
 
+-- HNodeIDSet
+class    HNoDuplicates nids => HNodeIDSet nids
+instance HNodeIDSet HNil
+instance (HOccursNot nid nids, HNodeIDSet nids) => HNodeIDSet (HCons nid nids)
+
 -- HNode
-class ( HNodeSet (HLinksFrom n)
-      )
-    => HNode n
+class HNodeIDSet (HLinksFrom n) => HNode n
     where
       type HNodeID n
       type HLinksFrom n
 
+-- HNodeIDA
+data HNodeIDA
+instance ApplyT HNodeIDA n where
+    type Apply HNodeIDA n = HNodeID n
+
 -- HGraph
 class ( HNodeSet (HNodes g)
+      , HNoDuplicates (HMap HNodeIDA g)
       )
     => HGraph g
     where
       type HNodes g
+
+--type family HGetNode g n
\ No newline at end of file