module type BINTREE = sig type bin_tree val empty : bin_tree val member : bin_tree -> int -> bool val insert : bin_tree -> int -> bin_tree end module Bintree : BINTREE = struct type bin_tree = | Empty | Node of bin_tree * bin_tree * int let empty = Empty let rec member (t:bin_tree) (i:int):bool = match t with | Empty -> false | Node (l, r, j) -> if i = j then true else if i < j then (member l i) else (member r i) let rec insert (t:bin_tree) (i:int):bin_tree = match t with | Empty -> Node (Empty, Empty, i) | Node (l, r, j) -> if i < j then Node (insert l i, r, j) else Node (l, insert r i, j) end