From 8f45228e1dddb11fc286cd5fbb6f91762d2f00b4 Mon Sep 17 00:00:00 2001 From: Mysaa Date: Thu, 14 Mar 2024 13:27:12 +0100 Subject: [PATCH] The solver works ... well at least it compiles --- src/Solver.ml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/Solver.ml b/src/Solver.ml index fc2890a..69e45db 100644 --- a/src/Solver.ml +++ b/src/Solver.ml @@ -37,8 +37,9 @@ module Make (T : Utils.Functor) = struct | NErr of 'e | NDo of ('a, 'e) Constraint.t T.t - let eval : type a e. bool -> env -> (a, e) Constraint.t -> log * env * (a, e) normal_constraint - = fun log env0 c0 -> + let eval (type a e) ~log (env0 : env) (c0 : (a, e) Constraint.t) + : log * env * (a, e) normal_constraint + = let add_to_log, get_log = if log then make_logger c0 else ignore, (fun _ -> []) @@ -90,14 +91,16 @@ module Make (T : Utils.Functor) = struct env := a; add_to_log (!env); NRet (fun _ -> ()) (* We return unit *) - | Error(Clash(x,y)) -> NErr (Clash(x,y)) + | Error(Clash(x,y)) -> + let xt,yt = Decode.decode (!env) x, Decode.decode (!env) y in + NErr(Clash(xt,yt)) | Error(Cycle(x)) -> NErr (Cycle(x)) end | Exist(x,s,c) -> env := Unif.Env.add x s !env; add_to_log (!env); evalc c - | Decode(v) -> _ + | Decode(v) -> NRet (fun _ -> Decode.decode (!env) v) | Do(act) -> NDo act in let out = evalc c0 in