[Haskell-beginners] More direct binding of IO result

Michael Snoyman michael at snoyman.com
Sun May 15 13:58:55 CEST 2011


On Sun, May 15, 2011 at 2:56 PM, aditya siram <aditya.siram at gmail.com>wrote:

> 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"
>
> Actually, <$> is just a synonym for fmap, so this will have the same
problems as the fmap approach.

Michael


> 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
>>
>
>
> _______________________________________________
> 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/d0919738/attachment.htm>


More information about the Beginners mailing list