[Feature] add Applicative