implemented product Applicative