[Haskell-beginners] Get things from IO monad
aditya siram
aditya.siram at gmail.com
Fri May 6 05:25:46 CEST 2011
Generally every function that uses something in the IO monad *has* to
return something in the IO monad or a monad transformer that has IO at
its base.
This is so that you can track any function that could potentially have
some side-effect just by looking at the signature.
There is a function called "unsafePerformIO" which subverts this by
turning an 'IO a' into an 'a', but it's not really meant for general
use.
This frustrated me in the beginning too, but I found that if I was
using 'unsafePerformIO' too much the design was probably bad.
-deech
On Thu, May 5, 2011 at 5:48 PM, <jianqiuchi at gmail.com> wrote:
> Hi,
>
> I have a silly question, Can i get things out of IO monad?
>
> for example, function 'anotherFun' doesn't work.
>
> genFunc :: IO String
>
> anotherFunc :: (Monad m) => m String
> -- m is a complex monad and is not an IO monad
> -- m is not an instance of MonadIO so liftIO will not work
> anotherFunc = do
> genStr <- genFunc
> return genStr
>
>
> I just want to get something from IO monad and wrap it with some other
> monad. Is there anyway to do that? Thanks.
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
>
>
More information about the Beginners
mailing list