Browse thread
ocamlgraph ConcreteBidirectional and Dot
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Pietro Abate <Pietro.Abate@p...> |
| Subject: | ocamlgraph ConcreteBidirectional and Dot |
Hello all.
I've a small problem with ocamlgraph.
I want to parse a dot graph into a ConcreteBidirectional.
The problem is that the signature needed for Dot.Parse requires a function
edge, but I've no mean to specify a label (since it is unlabelled !!)...
The functor for ConcreteBidirectional says E.t = (V.t * V.t),
but I don't quite understand the type of B.G.E.label ...
ConcreteBidirectional is of type Sig.I with
with type V.t = V.t and type V.label = V.t and type E.t = V.t * V.t
Sig.I includes Sig.G
and Sig.G has E: Sig.EDGE with type vertex = vertex
but I'm missing the type of label for unlabelled graphs ... that should be
an implementation detail, isn't it ?
I tried to look at the implementation of per_imp.ml but I got a bit lost...
this is what I'm trying to do:
-------------------
module V = struct
type t = string
let compare = Pervasives.compare
let hash = Hashtbl.hash
let equal l1 l2 = (l1 = l2)
end
module G = Imperative.Digraph.ConcreteBidirectional(V)
module B = Builder.I(G)
module L = struct
open Dot_ast
let node (id,_) attrs = match id with
| Ident i -> i
| Number n -> n
| String s -> s
| Html h -> h
let edge l = ""
end
module DIn = Dot.Parse (B)(L)
---------------
the problem is:
Error: Signature mismatch:
Modules do not match:
sig
val node : Graph.Dot_ast.id * 'a -> 'b -> string
val edge : 'a -> string
end
is not included in
sig
val node :
Graph.Dot_ast.node_id -> Graph.Dot_ast.attr list -> B.G.V.label
val edge : Graph.Dot_ast.attr list -> B.G.E.label
end
Values do not match:
val edge : 'a -> string
is not included in
val edge : Graph.Dot_ast.attr list -> B.G.E.label
Command exited with code 2.