use `lazy val` instead of `val` in lanApplicative#ap