[Haskell-cafe] Lifting IO actions into Applicatives
Niklas Haas
haskell
Tue Oct 1 07:29:00 UTC 2013
On Tue, 1 Oct 2013 02:21:13 -0500, John Lato <jwlato at gmail.com> wrote:
> It's not a solution per se, but it seems to me that there's no need for the
> Monad superclass constraint on MonadIO. If that were removed, we could
> just have
>
> class LiftIO t where
> liftIO :: IO a -> t a
>
> and it would Just Work.
One concern with this is that it's not exactly clear what the semantics
are on LiftIO (is liftIO a >> liftIO b equal to liftIO (a >> b) or not?)
and the interaction between LiftIO and Applicative/Monad would have to
be some sort of ugly ad-hoc law like we have with Bounded/Enum etc.
Furthermore, you might end up specifying a lot of ?redundant?
constraints like (Monad m, LiftIO m) that way, just a thing to keep in
mind.
More information about the Haskell-Cafe
mailing list