Crap! You're right, should've tried it out. Sorry Christopher! The second approach does work though.
-deech
On Sun, May 15, 2011 at 2:56 PM, aditya siram <aditya.siram@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.MichaelOr if you want to chain the functions and not worry about the "contents.txt" argument:
import Control.Monad
main= (readFile >=> putStrLn) "contents.txt"
-deechOn Sun, May 15, 2011 at 1:27 AM, Christopher Howard <christopher.howard@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@haskell.org
http://www.haskell.org/mailman/listinfo/beginners
_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://www.haskell.org/mailman/listinfo/beginners