@@ -1196,8 +1196,8 @@ let elpi_stdlib_src = let open BuiltIn in [
11961196
11971197]
11981198
1199- let ocaml_set ~name (type a )
1200- (alpha : a Conversion.t ) (module Set : Util.Set.S with type elt = a ) =
1199+ let ocaml_set_conv ~name (type a ) ( type b )
1200+ (alpha : a Conversion.t ) (module Set : Util.Set.S with type elt = a and type t = b ) =
12011201
12021202let set = OpaqueData. declare {
12031203 OpaqueData. name;
@@ -1213,6 +1213,7 @@ let set = { set with Conversion.ty = Conversion.(TyName name) } in
12131213
12141214let open BuiltIn in let open BuiltInData in
12151215
1216+ set,
12161217[
12171218 LPCode (" kind " ^ name^ " type." );
12181219
@@ -1299,6 +1300,7 @@ let open BuiltIn in let open BuiltInData in
12991300 DocAbove );
13001301]
13011302;;
1303+ let ocaml_set ~name c m = snd (ocaml_set_conv ~name c m)
13021304
13031305let ocaml_map ~name (type a )
13041306 (alpha : a Conversion.t ) (module Map : Util.Map.S with type key = a ) =
@@ -1376,7 +1378,6 @@ let open BuiltIn in let open BuiltInData in
13761378;;
13771379
13781380module LocMap : Util .Map. S with type key = Ast.Loc. t = Util.Map. Make (Ast. Loc )
1379- module LocSet : Util .Set. S with type elt = Ast.Loc. t = Util.Set. Make (Ast. Loc )
13801381
13811382let elpi_map = let open BuiltIn in [
13821383
@@ -1390,6 +1391,9 @@ let elpi_set = let open BuiltIn in [
13901391
13911392]
13921393
1394+ let string_set, string_set_decl = ocaml_set_conv ~name: " std.string.set" BuiltInData. string (module API.Compile. StrSet )
1395+ let int_set, int_set_decl = ocaml_set_conv ~name: " std.int.set" BuiltInData. int (module API.Utils. IntSet )
1396+ let loc_set, loc_set_decl = ocaml_set_conv ~name: " std.loc.set" BuiltInData. loc (module API.Utils. LocSet )
13931397
13941398let elpi_stdlib =
13951399 elpi_stdlib_src @
@@ -1406,9 +1410,9 @@ let elpi_stdlib =
14061410 ocaml_map ~name: " std.string.map" BuiltInData. string (module Util. StrMap ) @
14071411 ocaml_map ~name: " std.int.map" BuiltInData. int (module Util. IntMap ) @
14081412 ocaml_map ~name: " std.loc.map" BuiltInData. loc (module LocMap ) @
1409- ocaml_set ~name: " std.string.set " BuiltInData. string ( module Util. StrSet ) @
1410- ocaml_set ~name: " std.int.set " BuiltInData. int ( module Util. IntSet ) @
1411- ocaml_set ~name: " std.loc.set " BuiltInData. loc ( module LocSet ) @
1413+ string_set_decl @
1414+ int_set_decl @
1415+ loc_set_decl @
14121416 []
14131417;;
14141418
0 commit comments