--- /dev/null
+{-# 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