currently it only has MonadError when `F[_]: Monad` but I think you can have ApplicativeError when `F[_]: Applicative`.
currently it only has MonadError when
F[_]: Monadbut I think you can have ApplicativeError whenF[_]: Applicative.