add Option.mapEqual