What is the proper way to use the "ap" monad in Haskell? I want to do something similar to this:
main = (putStr . ap (++) show) "main = (putStr . ap (++) show) "
but I get the error "Not in scope: 'ap'."
Using "import Control.Monad" does nothing. And I have tried giving it
"ap :: Monad m => m (a -> b) -> m a -> m b"
then I get "The type signature for `ap' lacks an accompanying binding"
Importing Control.Monad
should give you ap
. However, in all but the most recent versions of GHC (7.6.1 and newer), you'll also need to import Control.Monad.Instances
to use the monad instance for functions.
Alternatively, you can import Control.Applicative
which gives you the <*>
operator, which is ap
generalized to Applicative
, as well as the necessary instances to use it with functions.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With