[Haskell-cafe] Haskell-Cafe Digest, Vol 93, Issue 58

James Cook mokus at deepbondi.net
Thu Jun 9 15:24:46 CEST 2011


On Jun 8, 2011, at 11:17 PM, Gregory Guthrie wrote:

> I rather had the feeling expressed by Robert Harper:
>  " Once you're in the IO monad, you're stuck there forever, and are  
> reduced to Algol-style imperative programming."
>  (http://existentialtype.wordpress.com/2011/05/01/of-course-ml-has-monads/ 
> )

If Algol is as elegant and expressive as IO in Haskell, I'd hardly  
consider that a problem.  In fact, I would seriously consider learning  
Algol.

There seems to be a lot of IO-hate floating around, but in my opinion  
it is largely undeserved.  Even if every function in Haskell had to  
use IO, Haskell would still be a vastly more expressive language than  
most.  It would essentially be a lazy dialect of ML with different  
syntax and without parameterized modules (and, in GHC, with a lot of  
awesome type system extensions).  IO has pretty much the same  
expressiveness as ML.  It has higher-order functions, closures, etc.    
You can build higher level abstractions on top of it, and people do -  
there are some pretty awesome libraries out there that are nothing  
more than "glorified" IO.  The CHP library, for example, builds a very  
powerful and very un-IO-like abstraction on top of IO.  IO is not such  
a bad place to be stuck, all things considered.

I think there is a tendency to look at IO as bad because pure code is  
so much better.  But it's important to keep things in perspective -  
the existence of something better doesn't make something bad.  IO is  
still better than the best of most other languages.

-- James



More information about the Haskell-Cafe mailing list