I prefer to stick as closely as possible to the functional paradigm, squeezing as close as I can get to the purely functional when my brain is up for the challenge. I use F# when possible. Usually, I'm stuck with either VB.NET or C# (or VBA, when I'm really unlucky). So my languages allow me to stray quite far from the functional approach.
Historically I've ignored logging and communicating with the user until I've got a result--just let the user wait. Now I'm trying to implement logging and/or updates of status bars. It's easy, because my languages allow me to write to standard output whenever I want. But from a purely functional stand-point, how does one go about leaking information about what's going on inside one's function to the outside world? Is logging or communicating with the user during computation simply contrary to the purely functional approach?
I'm sure in Haskell one would use a Monad. What about when using other languages?
Thanks.