[Haskell-cafe] Conditionals and case expressions in do blocks

Edward Amsden eca7215 at cs.rit.edu
Wed Jan 26 21:22:34 CET 2011

Inside a do block, I can very conveniently substitute

let x = <pure exp>
<continued monadic code>

for either
x <- return <pure exp>
<continued monadic code>

let x = <pure exp>
in do
<continued monadic code>

However, I can't do anything similar (that I know of) with if or case
expressions. If I use if or case inside a do block, it's likely that
I'm still using monadic expressions (at least in my experience). Is
there some nasty semantic ambiguity that comes of this? Is it just not
in the standard yet? Is there some extension that I'm not aware of?

Edward Amsden
Computer Science
Rochester Institute of Technology

More information about the Haskell-Cafe mailing list