let choose p a = let select x = if p x then raise(Found(x)) in try iter select a; raise Not_found with Found(x) -> x