Hello,
So I've been trying to print some information in a file. I have two versions of the same function: one of them doesn't work and I don't understand why.
Here are the functions:
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
-- This one works as intended when called from ghci
renderTrackInfosToFile :: FilePath -> String -> IO [TrackInfos] -> IO ()
renderTrackInfosToFile filename sep ls = do nls <- ls
writeFile filename (intercalate "\n" $ map (renderTrackInfo sep) nls)
return ()
-- This one does nothing when called from ghci
renderTrackInfosToFile2 :: FilePath -> String -> [TrackInfos] -> IO ()
renderTrackInfosToFile2 filename sep ls = writeFile filename (intercalate "\n" $ map (renderTrackInfo sep) ls)
renderTrackInfo :: String -> TrackInfos -> String
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
Both functions load in ghci, and the following commands are issued:
> -- c :: IO [TrackInfos]
> liftM (renderTrackInfosToFile2 "blabla.txt" "|") c -- this command seems to do absolutely nothing
> renderTrackInfosToFile "blabla.txt" "|" c -- this one works as intended
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
And this is not the first time I have this sort of problem using liftM. I now that I'm missing something important here,
can anyone explain me my mistake?
Much thanks,
Guillaume Basse