]> gitweb @ CieloNegro.org - hs-rrdtool.git/blobdiff - Data/HList/Graph.hs
DSList
[hs-rrdtool.git] / Data / HList / Graph.hs
diff --git a/Data/HList/Graph.hs b/Data/HList/Graph.hs
new file mode 100644 (file)
index 0000000..ee5f613
--- /dev/null
@@ -0,0 +1,33 @@
+{-# LANGUAGE
+  FlexibleContexts,
+  FlexibleInstances,
+  TypeFamilies
+  #-}
+module Data.HList.Graph
+    ( HNodeSet
+    , HNode(..)
+    , HGraph(..)
+    )
+    where
+
+import Data.HList.Prelude
+
+-- HNodeSet
+class    HNodeSet ns
+instance HNodeSet HNil
+instance HNodeSet ns => HNodeSet (HCons n ns)
+
+-- HNode
+class ( HNodeSet (HLinksFrom n)
+      )
+    => HNode n
+    where
+      type HNodeID n
+      type HLinksFrom n
+
+-- HGraph
+class ( HNodeSet (HNodes g)
+      )
+    => HGraph g
+    where
+      type HNodes g