Dear all,

I'm trying to construct a tree (for the Aho-Corasick exact match algorithm) but I can't quite figure out how to do this.

1) Is it possible to declare a recursive type that would allow for a tree having an arbitrarily large number of children per node?

I couldn't figure that one out, so I was thinking I could use a Map collection to represent edges.

2) How do you wrap a Map in an object or record?  In my case the edges represent single characters, so I started with

#module CharMap = Map.Make(Char);;

but then the top level was not happy with

#type node = { a: int; b: CharMap.t };;

3) If there are preexisting graphical libraries for ocaml, maybe I should just use those, but after searching a bit I was unable to find any.  Does someone know where I could find one?

Thanks,
Justin