As defined in Section 16.2, module language interface consists of t provides for structures (provideStr) and for functors (provideFun), whose syntax is given below.
provideStr | ::= | structure strid = struct provideStrdecl end |
provideStrdecl | ::= | provideVal |
provideType | ||
provideDatatype | ||
provideException | ||
provideStr | ||
provideFun | ::= | functor provideFunBind |
provideFunBind | ::= | funid (strdesc) = provideStrExp |
The following are examples of structure declarations and their interface.
Bool.sml file:
structure Bool =
struct datatype bool = false | true fun not true = false | not false = true fun toString true = "true" | toString false = "false" end Bool.smi file: structure Bool = struct datatype bool = false | true val not : bool -> bool val toString : bool -> string end |