33 lines · 1011 B · Standard ML
RawDownload
(* 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 -> unitval readbase  : string -> database val keycompare : string * string -> orderval lookup     : database * string -> entry list (* Extract the name from an entry: *) val getname : entry -> string