fix applicative to use fmap efficently, thanks to @ekroth for his help.