RosettaCodeData/Task/Power-set/OCaml/power-set-1.ml
2024-10-16 18:07:41 -07:00

17 lines
293 B
OCaml

module PowerSet(S: Set.S) =
struct
include Set.Make (S)
let map f s =
let work x r = add (f x) r in
fold work s empty
;;
let powerset s =
let base = singleton (S.empty) in
let work x r = union r (map (S.add x) r) in
S.fold work s base
;;
end;; (* PowerSet *)