Then you might want to use something like:
currentTimeStr :: IO String
currentTimeStr = do ct <- currentTime
return ("File creation date: " ++ show ct ++ " by MyCompany")
Or more concisely,
currentTimeStr :: IO String
currentTimeStr = liftM (\ ct -> "File creation date: " ++ show ct ++ " by MyCompany" ) currentTime
My point is, the type of currentTimeStr is IO String, not just String. Because you are working on an IO value.
Best,
PS: If you are not confident with the piece of code I've suggested, please have a look at the io/monads/do-notation sections of the Real World Haskell.
Starting from the beginning, my original problem is to create the string:"File creation date: " ++ currentSystemDate ++ " by MyCompany"to obtain the string"File creation date: 2010-06-24 by MyCompany"Probably this is really trivial, but I'm a real beginner in Haskell and this seems to me a big problem.Luca.On Jun 24, 2010, at 9:59 AM, Ozgur Akgun wrote:On 24 June 2010 10:52, Luca Ciciriello <luca_ciciriello@hotmail.com> wrote:
Just a question.
How can I obtain a String from
currentTime :: IO Day
currentTime = utctDay `fmap` getCurrentTime
Here currentTime returns to me 2010-06-24, but I want "2010-06-24".
In another worlds I need a function
I bet Day has a Show instance (that's why you get 2010-06-24 in ghci I suppose)
Just use that.
currentTimeStr :: IO Day -> String
Getting out of IO? I would think again. Following might be what you really want:
currentTimeStr :: IO Day -> IO String
Any Idea?
Luca.
Best,
Ozgur