summaryrefslogtreecommitdiffstats
path: root/stdlib
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib')
-rw-r--r--stdlib/obj.ml1
-rw-r--r--stdlib/obj.mli1
-rw-r--r--stdlib/set.ml5
-rw-r--r--stdlib/set.mli1
4 files changed, 6 insertions, 2 deletions
diff --git a/stdlib/obj.ml b/stdlib/obj.ml
index 7e2d966bb..247f4cdf5 100644
--- a/stdlib/obj.ml
+++ b/stdlib/obj.ml
@@ -10,4 +10,3 @@ external size : t -> int = "%array_length"
external field : t -> int -> t = "%array_unsafe_get"
external set_field : t -> int -> t -> unit = "%array_unsafe_set"
external new_block : int -> int -> t = "obj_block"
-external update : t -> t -> unit = "%update"
diff --git a/stdlib/obj.mli b/stdlib/obj.mli
index 7e2d966bb..247f4cdf5 100644
--- a/stdlib/obj.mli
+++ b/stdlib/obj.mli
@@ -10,4 +10,3 @@ external size : t -> int = "%array_length"
external field : t -> int -> t = "%array_unsafe_get"
external set_field : t -> int -> t -> unit = "%array_unsafe_set"
external new_block : int -> int -> t = "obj_block"
-external update : t -> t -> unit = "%update"
diff --git a/stdlib/set.ml b/stdlib/set.ml
index 84a8a942c..f0434f265 100644
--- a/stdlib/set.ml
+++ b/stdlib/set.ml
@@ -22,6 +22,7 @@ module type S =
val equal: t -> t -> bool
val iter: (elt -> 'a) -> t -> unit
val fold: (elt -> 'a -> 'a) -> t -> 'a -> 'a
+ val cardinal: t -> int
val elements: t -> elt list
val choose: t -> elt
end
@@ -212,6 +213,10 @@ module Make(Ord: OrderedType): (S with elt = Ord.t) =
Empty -> accu
| Node(l, v, r, _) -> fold f l (f v (fold f r accu))
+ let rec cardinal = function
+ Empty -> 0
+ | Node(l, v, r, _) -> cardinal l + 1 + cardinal r
+
let rec elements_aux accu = function
Empty -> accu
| Node(l, v, r, _) -> elements_aux (v :: elements_aux accu r) l
diff --git a/stdlib/set.mli b/stdlib/set.mli
index dff78105a..f88480b3c 100644
--- a/stdlib/set.mli
+++ b/stdlib/set.mli
@@ -22,6 +22,7 @@ module type S =
val equal: t -> t -> bool
val iter: (elt -> 'a) -> t -> unit
val fold: (elt -> 'a -> 'a) -> t -> 'a -> 'a
+ val cardinal: t -> int
val elements: t -> elt list
val choose: t -> elt
end