summaryrefslogtreecommitdiff
path: root/src/Grasp/Types.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Grasp/Types.hs')
-rw-r--r--src/Grasp/Types.hs65
1 files changed, 23 insertions, 42 deletions
diff --git a/src/Grasp/Types.hs b/src/Grasp/Types.hs
index af43d51..860e5ef 100644
--- a/src/Grasp/Types.hs
+++ b/src/Grasp/Types.hs
@@ -1,67 +1,48 @@
module Grasp.Types (
- GraspProgram(..),
-
- namedNodes,
- nodesWithName,
- normalise,
- iso
+ Instruction,
+ EdgeLabel,
+ GNode,
+ GEdge
) where
-import Data.Graph.Inductive.Graph( Node, LNode, LEdge, (&) )
-import qualified Data.Graph.Inductive.Graph as Graph
-import Data.Graph.Inductive.Tree
-import Data.List
-import Data.Maybe
-import qualified Data.Map as Map
-
-
-
-
-type GraspProgram = Gr String String
-
-instance (Ord a, Ord b) => Eq (Gr a b) where
- a == b = ((sort . Graph.labNodes $ a) == (sort . Graph.labNodes $ b)) &&
- ((sort . Graph.labEdges $ a) == (sort . Graph.labEdges $ b))
+import Grasp.Graph( Node, LNode, LEdge )
-namedNodes :: GraspProgram -> [LNode String]
-namedNodes g =
- let nodes = Graph.labNodes g
- edges = Graph.labEdges g
+newtype Instruction = Instruction String
+ deriving (Eq, Show)
- nameEdges = filter (\(_,_,z) -> z == "name") edges
- nameNodes = map (\(x,_,_) -> x) nameEdges
+newtype EdgeLabel = EdgeLabel String
+ deriving (Eq, Show)
- in filter (\(x,_) -> x `elem` nameNodes) nodes
+newtype GNode = GNode (LNode Instruction)
+ deriving (Eq, Show)
+newtype GEdge = GEdge (LEdge EdgeLabel)
+ deriving (Eq, Show)
-nodesWithName :: GraspProgram -> String -> [LNode String]
-nodesWithName g s =
- let nodes = Graph.labNodes g
- edges = Graph.labEdges g
- nodeLabelMap = Map.fromList nodes
- nameEdges = filter (\(_,_,z) -> z == "name") edges
- specific = filter (\(_,y,_) -> fromJust (Map.lookup y nodeLabelMap) == s) nameEdges
- nameNodes = map (\(x,_,_) -> x) specific
+gnode :: GNode -> Node
+gnode (GNode a) = fst a
- in filter (\(x,_) -> x `elem` nameNodes) nodes
+gninst :: GNode -> Instruction
+gninst (GNode a) = snd a
--- to-do
-normalise :: GraspProgram -> GraspProgram
-normalise g = Graph.mkGraph [] []
+gefrom :: GEdge -> Node
+gefrom (GEdge (a,_,_)) = a
+geto :: GEdge -> Node
+geto (GEdge (_,b,_)) = b
-iso :: GraspProgram -> GraspProgram -> Bool
-iso a b = (normalise a) == (normalise b)
+gelabel :: GEdge -> EdgeLabel
+gelabel (GEdge (_,_,c)) = c