123456789101112131415161718192021222324letexistsp=function|Somex->px|None->falseletfor_allp=function|Somex->px|None->true(** Open this to use applicative functor/monad syntax for {!option}. *)moduleSyntax=struct(* Applicative functor. *)let(let+)xf=Option.mapfxlet(and+)xy=matchx,ywith|Somex,Somey->Some(x,y)|_,_->None(* Monad *)let(let*)=Option.bindlet(and*)=(and+)let(>>=)=Option.bindend