As I said, for simplicity, we'll represent sets using lists:
type 'a set = 'a list;;
- let empty_set : 'a set = [];;
- let unit_set (value: 'a) : 'a set = [value];;
- let bind_set (u: 'a set) (f: 'a -> 'b set) : 'b set =
+ let set_empty : 'a set = [];;
+ let set_unit (value: 'a) : 'a set = [value];;
+ let set_bind (u: 'a set) (f: 'a -> 'b set) : 'b set =
List.concat (List.map f u);;