sig
  val loop : (T.Type.t Env.t -> T.Ast.t -> T.Type.t) -> unit
  val loop_eval :
    (T.Type.t Env.t -> T.Ast.t -> T.Type.t) ->
    (Pervasives.out_channel -> '-> unit) ->
    ('Env.t -> T.Ast.t -> 'a) -> unit
end