[Haskell-cafe] Generalizing IO

Antoine Latter aslatter at gmail.com
Tue Oct 6 00:08:37 EDT 2009


On Mon, Oct 5, 2009 at 10:54 PM, Floptical Logic
<flopticalogic at gmail.com> wrote:
>
> If I were to make an instance of MonadIO be a parameter to StateT and
> I wanted to use the Net monad (from Roll your own IRC bot on the wiki)
> with it, I would need to make Net an instance of MonadIO.  What would
> this instance look like?

If you define 'Net' as in the tutorial above, it will already be an
instance of MonadIO :-)

> I think the loop function is the least of my worries.  I am more
> concerned about the runCmd function.  What would go in place of print
> in runCmd?

The function 'liftIO . print' will work in any monad which is an
instance of MonadIO. Take a look at
http://hackage.haskell.org/packages/archive/mtl/1.1.0.2/doc/html/Control-Monad-Trans.html#v:liftIO
for where 'liftIO' comes from.

Antoine


More information about the Haskell-Cafe mailing list