Added solver for Functor actions

This commit is contained in:
Mysaa 2024-03-14 14:16:53 +01:00
parent 88994419e3
commit 8d3f175a82
Signed by: Mysaa
GPG Key ID: 7054D5D6A90F084F

View File

@ -66,13 +66,13 @@ module Make (T : Utils.Functor) = struct
begin match (evalc c) with
| NRet a -> NRet (fun ctx -> (f (a ctx)))
| NErr e -> NErr e
| NDo act -> Utils.not_yet "NDo" (act)
| NDo act -> NDo (T.map (fun c -> Constraint.Map(c,f)) act)
end
| MapErr(c, f) ->
begin match (evalc c) with
| NRet a -> NRet a
| NErr e -> NErr (f e)
| NDo act -> Utils.not_yet "NDo" (act)
| NDo act -> NDo (T.map (fun c -> Constraint.MapErr(c,f)) act)
end
| Conj(c,d) ->
begin match (evalc c) with
@ -80,10 +80,10 @@ module Make (T : Utils.Functor) = struct
begin match (evalc d) with
| NRet b -> NRet (fun ctx -> (a ctx,b ctx))
| NErr e -> NErr e
| NDo act -> Utils.not_yet "NDo" (act)
| NDo act2 -> NDo (T.map (fun d -> Constraint.Conj(c,d)) act2)
end
| NErr e -> NErr e
| NDo act -> Utils.not_yet "NDo" (act)
| NDo act1 -> NDo (T.map (fun c -> Constraint.Conj(c,d)) act1)
end
| Eq(x,y) ->
begin match (Unif.unify (!env) x y) with