diff options
| -rw-r--r-- | bin/main.ml | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/bin/main.ml b/bin/main.ml index 26375da..ede8ac5 100644 --- a/bin/main.ml +++ b/bin/main.ml @@ -9,11 +9,19 @@ let print_solutions solutions = | solutions -> List.iter (fun { Sol.Vm.bindings; residue } -> + (* A variable resolved to itself carries no information; + its constraints, if any, are in the residue. *) + let informative = + List.filter + (fun (variable, pattern) -> + not (Sol.Pattern.equal pattern (Sol.Pattern.Var variable))) + bindings + in let parts = List.map (fun (variable, pattern) -> Format.asprintf "%s = %a" variable Sol.Pattern.pp pattern) - bindings + informative @ List.map (Format.asprintf "%a" Sol.Vm.pp_residual) residue in match parts with |
