[Haskell-cafe] background question about IO monad

Luke Palmer lrpalmer at gmail.com
Wed Feb 6 01:12:08 EST 2008


On Feb 5, 2008 9:44 PM, Uwe Hollerbach <uhollerbach at gmail.com> wrote:
>   lisp> (UTCtime)
>   "Wed Feb  6 03:57:45 UTC 2008"
> ---
>   lisp> (UTCtime 1.203e9)
>   "Thu Feb 14 14:40:00 UTC 2008"
> --
> But after that, it sure seems to me as if I've taken data out of the
> IO monad... haven't I? Given that the second alternative never entered
> doIOAction and that after both are done I have a string of characters,
> prettily formatted to indicate a time, that's what it feels like to
> this unwashed C programmer.

Formatting a time is a completely pure operation.  If you give the
time formatting function
the same timestamp, you always get the same string back.  It is
getting the *current* time
which is in the IO monad, since it "returns" different results
depending on at what time it is
called.

Luke


More information about the Haskell-Cafe mailing list