sig
type environment
type tconstraint = Constraint.tconstraint
type solving_step =
Init of Solver.tconstraint
| Solve of Solver.tconstraint
| Solved of Solver.tconstraint
| UnifyTerms of Constraint.crterm * Constraint.crterm
| UnifyVars of Constraint.variable * Constraint.variable
| Generalize of int * Constraint.variable list
val solve :
?tracer:(Solver.solving_step -> unit) ->
Solver.tconstraint -> Solver.environment
val environment_as_list :
Solver.environment -> (string * Constraint.variable) list
module type SolverException =
sig
exception TypingError of Positions.position
exception UnboundIdentifier of Positions.position * string
exception CannotGeneralize of Positions.position * Constraint.variable
exception NonDistinctVariables of Positions.position *
Constraint.variable list
end
exception TypingError of Positions.position
exception UnboundIdentifier of Positions.position * string
exception CannotGeneralize of Positions.position * Constraint.variable
exception NonDistinctVariables of Positions.position *
Constraint.variable list
end