sig
type algebraic_datatype = (MiniAst.dname * MultiEquation.variable) list
type type_info =
MiniKindInferencer.t * MultiEquation.variable *
MiniTypingEnvironment.algebraic_datatype option Pervasives.ref
type data_constructor =
int * MultiEquation.variable list * MultiEquation.crterm
type environment
val empty_environment : MiniTypingEnvironment.environment
val fold_type_info :
('a -> MiniAst.tname * MiniTypingEnvironment.type_info -> 'a) ->
'a -> MiniTypingEnvironment.environment -> 'a
val add_type_variables :
(MiniAst.tname * MiniTypingEnvironment.type_info) list ->
MiniTypingEnvironment.environment -> MiniTypingEnvironment.environment
val add_type_constructor :
MiniTypingEnvironment.environment ->
MiniAst.tname ->
MiniTypingEnvironment.type_info -> MiniTypingEnvironment.environment
val add_data_constructor :
MiniTypingEnvironment.environment ->
MiniAst.dname ->
MiniTypingEnvironment.data_constructor ->
MiniTypingEnvironment.environment
val is_regular_datacon_scheme :
MiniTypingEnvironment.environment ->
MultiEquation.variable list -> MultiEquation.crterm -> bool
val lookup_datacon :
?pos:Positions.position ->
MiniTypingEnvironment.environment ->
MiniAst.dname -> MiniTypingEnvironment.data_constructor
val lookup_type_variable :
?pos:Positions.position ->
MiniTypingEnvironment.environment ->
MiniAst.tname -> MultiEquation.variable CoreAlgebra.arterm
val typcon_kind :
MiniTypingEnvironment.environment ->
MiniAst.tname -> MiniKindInferencer.t
val typcon_variable :
MiniTypingEnvironment.environment ->
MiniAst.tname -> MultiEquation.variable CoreAlgebra.arterm
val as_fun :
MiniTypingEnvironment.environment ->
MiniAst.tname -> MultiEquation.variable CoreAlgebra.arterm
val as_kind_env :
MiniTypingEnvironment.environment ->
(MiniAst.tname -> MiniKindInferencer.t) *
(MiniAst.tname -> MiniKindInferencer.t -> unit)
val fresh_datacon_scheme :
Positions.position ->
MiniTypingEnvironment.environment ->
MiniAst.dname -> MultiEquation.variable list * MultiEquation.crterm
val fresh_flexible_vars :
Positions.position ->
MiniTypingEnvironment.environment ->
MiniAst.tname list ->
MultiEquation.variable list *
(MiniAst.tname * MiniTypingEnvironment.type_info) list
val fresh_rigid_vars :
Positions.position ->
MiniTypingEnvironment.environment ->
MiniAst.tname list ->
MultiEquation.variable list *
(MiniAst.tname * MiniTypingEnvironment.type_info) list
val fresh_unnamed_rigid_vars :
Positions.position ->
MiniTypingEnvironment.environment ->
'a list ->
MultiEquation.variable list * ('a * MiniTypingEnvironment.type_info) list
val add_type_and_kind_variables :
(MiniAst.tname * MultiEquation.variable) list ->
MiniTypingEnvironment.environment -> MiniTypingEnvironment.environment
end