[Haskell-cafe] a regressive view of support for imperative programming in Haskell

ok ok at cs.otago.ac.nz
Thu Aug 9 00:02:05 EDT 2007

On 9 Aug 2007, at 8:41 am, David Roundy wrote:
> I may be stating the obvious here, but I strongly prefer the do  
> syntax.
> It's nice to know the other also, but the combination of do 
> +indenting makes
> complicated code much clearer than the nested parentheses that  
> would be
> required with purely >>= syntax.

Er, what nested parentheses would those be?
	do e		=> e

	do e		=> e >>
	   rest		   rest'

	do p <- e	=> e >>= \p ->
	   rest		   rest'

	do let d	=> let d in
	   rest		   rest'

We get extra >>, >>=, \, ->, and "in" tokens, but no new parentheses.

The example in the Report makes this clear:

	do putStr "x: "
	   l <- getLine
	   return (words l)

desugars to

	putStr "x: "     >>
         getLine          >>= \l ->
         return (words l)

with no extra parentheses.
[Not that this actually works in GHC 6; the implied flush isn't done.]

More information about the Haskell-Cafe mailing list