Skip to content

Commit 024cf45

Browse files
committed
Rename & add project structure
1 parent dd56966 commit 024cf45

File tree

9 files changed

+73
-34
lines changed

9 files changed

+73
-34
lines changed

.merlin

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
PRJ unifier
2+
S lib
23
S src
34
B _build/src
5+
B _build/lib

Makefile

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
##
2+
# Project Title
3+
#
4+
# @file
5+
# @version 0.1
6+
7+
#
8+
# Pure OCaml, no packages, no _tags, code in several directories
9+
#
10+
11+
# bin-annot is required for Merlin and other IDE-like tools
12+
# The -I flag introduces sub-directories to search for code
13+
14+
.PHONY: all clean byte native profile debug test
15+
16+
OCB_FLAGS = -tag bin_annot -I src -I lib
17+
OCB = ocamlbuild $(OCB_FLAGS)
18+
19+
all: native byte # profile debug
20+
21+
clean:
22+
$(OCB) -clean
23+
24+
native:
25+
$(OCB) main.native
26+
27+
byte:
28+
$(OCB) main.byte
29+
30+
profile:
31+
$(OCB) -tag profile main.native
32+
33+
debug:
34+
$(OCB) -tag debug main.byte
35+
36+
test: native
37+
./main.native
38+
39+
# end

_tags

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
true: -traverse

src/MultiSet.ml lib/MultiSet.ml

File renamed without changes.

src/MultiSet.mli lib/MultiSet.mli

File renamed without changes.

src/my_unification_alg.ml lib/UnifAlg.ml

-23
Original file line numberDiff line numberDiff line change
@@ -130,26 +130,3 @@ module Unify =
130130
end
131131
let pretty_print t = List.fold_left (fun x y -> x ^ y) "" (List.map (fun x -> (Unifier.str x) ^ ";") (EqSet.elements t))
132132

133-
let eq1 = Unifier.Equal (t1, t2)
134-
let eq2 = Unifier.Equal (t2, t2)
135-
let eq3 = Unifier.Equal (t3, t1)
136-
let eq4 = Unifier.Equal (t3, t4)
137-
let eq5 = Unifier.Equal (t1, t5)
138-
let eqSub = Unifier.Equal (`Var "c", `Term ("y", [`Var "c0"; `Var "c1"]))
139-
140-
let failing = EqSet.(empty |> add eq1 |> add eq2 |> add eq3 |> add eq4 |> add eq5)
141-
let failing_uni = UniSet.from_set failing
142-
143-
let foo = EqSet.(empty |> add eq2 |> add eq3)
144-
let foo_uni = UniSet.from_set foo
145-
let show_unif (unif : UniSet.t) = EqSet.elements unif.eqSet
146-
let show_candidates (candidates : EqSet.t ) = EqSet.elements candidates
147-
148-
let (unif_0, candidates_0) = Unify.unify_step (foo_uni,foo)
149-
let (unif_1, candidates_1) = Unify.unify_step (unif_0,candidates_0)
150-
let (unif_result, candidates_result) = Unify.unify (foo_uni,foo)
151-
152-
(* "Pretty" print the EqSet elements *)
153-
(* List.fold_left (fun x y -> x ^ y) "" (List.map Unifier.str (EqSet.elements foo)) *)
154-
155-
(* List.fold_left (fun x y -> x ^ y) "" (List.map (fun x -> (Unifier.str x) ^ ";") (EqSet.elements foo)) *)

src/my_unification_alg.mli lib/UnifAlg.mli

+6-11
Original file line numberDiff line numberDiff line change
@@ -172,8 +172,10 @@ module EqSet :
172172
module UniSet :
173173
sig
174174
type t = { vSet : VarMSet.t; eqSet : EqSet.t; }
175+
val union : t -> t -> t
175176
val add : Unifier.equality -> t -> t
176177
val add_from_list : Unifier.equality list -> t -> t
178+
val add_from_seq : Unifier.equality Seq.t -> t -> t
177179
val remove : Unifier.equality -> t -> t
178180
val contains : Var.var -> t -> bool
179181
val empty : t
@@ -183,8 +185,10 @@ module UniSet :
183185
module Unify :
184186
sig
185187
type t = UniSet.t = { vSet : VarMSet.t; eqSet : EqSet.t; }
188+
val union : t -> t -> t
186189
val add : Unifier.equality -> t -> t
187190
val add_from_list : Unifier.equality list -> t -> t
191+
val add_from_seq : Unifier.equality Seq.t -> t -> t
188192
val remove : Unifier.equality -> t -> t
189193
val contains : Var.var -> t -> bool
190194
val empty : t
@@ -193,16 +197,7 @@ module Unify :
193197
val eliminate : Unifier.equality -> EqSet.t -> EqSet.t
194198
val occurs_rec : Unifier.equality -> bool
195199
val conflict : Unifier.equality -> bool
196-
val unify : t * EqSet.t -> UniSet.t * EqSet.t
200+
val unify_step : t * EqSet.t -> UniSet.t * EqSet.t
201+
val unify : t * EqSet.t -> t * EqSet.t
197202
end
198203
val pretty_print : EqSet.t -> string
199-
val eq1 : Unifier.equality
200-
val eq2 : Unifier.equality
201-
val eq3 : Unifier.equality
202-
val eq4 : Unifier.equality
203-
val eq5 : Unifier.equality
204-
val eqSub : Unifier.equality
205-
val foo : EqSet.t
206-
val foo_uni : UniSet.t
207-
val vars_result : UniSet.t
208-
val eqs_result : EqSet.t

src/falgebra.ml lib/falgebra.ml

File renamed without changes.

src/main.ml

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
open UnifAlg
2+
3+
let eq1 = Unifier.Equal (t1, t2)
4+
let eq2 = Unifier.Equal (t2, t2)
5+
let eq3 = Unifier.Equal (t3, t1)
6+
let eq4 = Unifier.Equal (t3, t4)
7+
let eq5 = Unifier.Equal (t1, t5)
8+
let eqSub = Unifier.Equal (`Var "c", `Term ("y", [`Var "c0"; `Var "c1"]))
9+
10+
let failing = EqSet.(empty |> add eq1 |> add eq2 |> add eq3 |> add eq4 |> add eq5)
11+
let failing_uni = UniSet.from_set failing
12+
13+
let foo = EqSet.(empty |> add eq2 |> add eq3)
14+
let foo_uni = UniSet.from_set foo
15+
let show_unif (unif : UniSet.t) = EqSet.elements unif.eqSet
16+
let show_candidates (candidates : EqSet.t ) = EqSet.elements candidates
17+
18+
let (unif_0, candidates_0) = Unify.unify_step (foo_uni,foo)
19+
let (unif_1, candidates_1) = Unify.unify_step (unif_0,candidates_0)
20+
let (unif_result, candidates_result) = Unify.unify (foo_uni,foo)
21+
22+
(* "Pretty" print the EqSet elements *)
23+
(* List.fold_left (fun x y -> x ^ y) "" (List.map Unifier.str (EqSet.elements foo)) *)
24+
25+
(* List.fold_left (fun x y -> x ^ y) "" (List.map (fun x -> (Unifier.str x) ^ ";") (EqSet.elements foo)) *)

0 commit comments

Comments
 (0)