X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=hs-rrdtool.git;a=blobdiff_plain;f=Data%2FHList%2FGraph.hs;h=f31659ca4671b660c95b88b3d4cfae3a21e73e18;hp=ee5f613f1d5b4daea8ff4ed47dad0d643d31bb54;hb=256aad40f96ce034bc1aebd3302ecd8a86419163;hpb=c788edcf6744a51cb38795e4f1959d22d10ad071 diff --git a/Data/HList/Graph.hs b/Data/HList/Graph.hs index ee5f613..f31659c 100644 --- a/Data/HList/Graph.hs +++ b/Data/HList/Graph.hs @@ -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