6.2.16. Do And If Then Else¶
- DoAndIfThenElse¶
- Since:
7.0.1
- Status:
Included in
GHC2024,GHC2021,Haskell2010
Allow semicolons in
ifexpressions.
Normally, a conditional is written like this: if cond then expr1 else expr2. With the extension
DoAndIfThenElse, semicolons are allowed before the then and also before the else, allowing
if cond; then expr1; else expr2. (You can also include either semicolon on its own.)
Allowing semicolons in the middle of a conditional is useful in connection with layout-controlled
blocks, like do-blocks. This is because GHC invisibly inserts a semicolon between each line of a
layout-controlled block. Accordingly, with DoAndIfThenElse, we can write code like this
f mb x y = do
b <- mb
if b
then x
else y
Without DoAndIfThenElse, the then and else lines would have to be indented with respect
to the rest of the lines in the do-block.