sig
type 'a or_error = ('a, string) CCResult.t
type id = Nunchaku_core.ID.t
type 'a var = 'a Nunchaku_core.Var.t
type loc = Nunchaku_core.Location.t
exception ScopingError of string * string * TypeInference.loc option
type attempt_stack = Nunchaku_core.UntypedAST.term list
exception TypeError of string * TypeInference.attempt_stack
module Convert :
functor (T : Nunchaku_core.TermTyped.S) ->
sig
type term = T.t
type env
val empty_env : TypeInference.Convert.env
val convert_ty :
env:TypeInference.Convert.env ->
Nunchaku_core.UntypedAST.ty ->
TypeInference.Convert.term TypeInference.or_error
val convert_ty_exn :
env:TypeInference.Convert.env ->
Nunchaku_core.UntypedAST.ty -> TypeInference.Convert.term
val convert_term :
env:TypeInference.Convert.env ->
Nunchaku_core.UntypedAST.term ->
TypeInference.Convert.term TypeInference.or_error
val convert_term_exn :
env:TypeInference.Convert.env ->
Nunchaku_core.UntypedAST.term -> TypeInference.Convert.term
val generalize :
close:[ `Forall | `Fun | `NoClose ] ->
TypeInference.Convert.term ->
TypeInference.Convert.term *
TypeInference.Convert.term TypeInference.var list
type statement =
(TypeInference.Convert.term, TypeInference.Convert.term)
Nunchaku_core.Statement.t
val convert_statement :
env:TypeInference.Convert.env ->
Nunchaku_core.UntypedAST.statement ->
(TypeInference.Convert.statement * TypeInference.Convert.env)
TypeInference.or_error
val convert_statement_exn :
env:TypeInference.Convert.env ->
Nunchaku_core.UntypedAST.statement ->
TypeInference.Convert.statement * TypeInference.Convert.env
type problem =
(TypeInference.Convert.term, TypeInference.Convert.term)
Nunchaku_core.Problem.t
val convert_problem :
env:TypeInference.Convert.env ->
Nunchaku_core.UntypedAST.statement CCVector.ro_vector ->
(TypeInference.Convert.problem * TypeInference.Convert.env)
TypeInference.or_error
val convert_problem_exn :
env:TypeInference.Convert.env ->
Nunchaku_core.UntypedAST.statement CCVector.ro_vector ->
TypeInference.Convert.problem * TypeInference.Convert.env
end
module Make :
functor
(T1 : Nunchaku_core.TermTyped.S) (T2 : Nunchaku_core.TermInner.S) ->
sig
type term1 = T1.t
type term2 = T2.t
val pipe :
print:bool ->
(Nunchaku_core.UntypedAST.statement CCVector.ro_vector,
(TypeInference.Make.term1, TypeInference.Make.term1)
Nunchaku_core.Problem.t, 'a, 'a)
Nunchaku_core.Transform.t
val pipe_with :
decode:('c -> 'd) ->
print:bool ->
(Nunchaku_core.UntypedAST.statement CCVector.ro_vector,
(TypeInference.Make.term1, TypeInference.Make.term1)
Nunchaku_core.Problem.t, 'c, 'd)
Nunchaku_core.Transform.t
end
end