module TransSurface: sig
.. end
Translating the surface syntax down into the core language syntax.
type
env = TypeCore.var KindCheck.env
val translate_type_reset : env -> SurfaceSyntax.typ -> TypeCore.typ
translate_type_reset
translates a type.
val translate_data_type_group : (env -> SurfaceSyntax.type_binding list -> env) ->
env ->
SurfaceSyntax.data_type_group -> env * TypeCore.data_type_group
translate_data_type_group extend env group
translates a data type group.
The extend
function is passed a (list of) pairs of a data type name and
a kind, and must extend the environment in a suitable way (i.e., this name
could be mapped to a fresh variable, or to an existing point; see
KindCheck
). The function returns a pair of an environment that has been
extended with new types and new data constructors, and a translated data
type group.
val translate_implementation : env ->
SurfaceSyntax.toplevel_item list -> ExpressionsCore.implementation
translate_implementation
translates a compilation unit.
val translate_interface : env ->
SurfaceSyntax.toplevel_item list -> ExpressionsCore.interface
translate_interface
translates an interface.