[Haskell-beginners] More direct binding of IO result

aditya siram aditya.siram at gmail.com
Sun May 15 13:56:13 CEST 2011


You can also try the applicative way:
(<$>) :: (a -> b) -> f a -> f b

import Control.Applicative
-- Think of the <$> as a monadic version of $
main = putStrLn <$> readFile "contents.txt"

Or if you want to chain the functions and not worry about the "contents.txt"
argument:

import Control.Monad
main= (readFile >=> putStrLn) "contents.txt"

-deech

On Sun, May 15, 2011 at 1:27 AM, Christopher Howard <
christopher.howard at frigidcode.com> wrote:

> I understand that one can bind the unwrapped results of IO functions to
> variables, and pass them to functions, like so:
>
> main = do filecontents <- readFile "data.txt"
>          putStrLn filecontents
>
> But does the syntax allow you to cut out the middle man, so to speak,
> and bind the results directly to the parameter? Like
>
> -- Tried this and it didn't work.
> main = do putStrLn (<- readFile "data.txt")
>
> --
> frigidcode.com
> theologia.indicium.us
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20110515/9ca2adc8/attachment.htm>


More information about the Beginners mailing list