(* Database *)datatype component = Str (* structure *) | Exc of string (* exception constructor with name *) | Typ of string (* type constructor with name *) | Val of string (* value with name *) | Con of string (* value constructor with name *) | Term of string * string option (* term and optional kind *)(* An entry consist of a component and the name of its structure: *)type entry = { comp : component, file : string, line : int }(* Table represented by ordered binary tree: *)datatype 'contents table = Empty | Node of string * 'contents * 'contents table * 'contents table(* The database is a table of sorted lists of entries: *)type database = entry list tableval writebase : string * database -> unitval readbase : string -> databaseval keycompare : string * string -> orderval lookup : database * string -> entry list(* Extract the name from an entry: *)val getname : entry -> string
(* Database *)
datatype component =
Str (* structure *)
| Exc of string (* exception constructor with name *)
| Typ of string (* type constructor with name *)
| Val of string (* value with name *)
| Con of string (* value constructor with name *)
| Term of string * string option (* term and optional kind *)
(* An entry consist of a component and the name of its structure: *)
type entry = { comp : component, file : string, line : int }
(* Table represented by ordered binary tree: *)
datatype 'contents table =
Empty
| Node of string * 'contents * 'contents table * 'contents table
(* The database is a table of sorted lists of entries: *)
type database = entry list table
val writebase : string * database -> unit
val readbase : string -> database
val keycompare : string * string -> order
val lookup : database * string -> entry list
(* Extract the name from an entry: *)
val getname : entry -> string