The new MultiWayIf extension (available with GHC 7.6) allows guard syntax in an if:{-# LANGUAGE MultiWayIf #-}fn :: Int -> Stringfn x y = if | x == 1    -> a            | y <  2    -> b            | otherwise -> cBut I don't find it better than the old way:fn :: Int -> Stringfn x y | x == 1    = a       | y <  2    = b       | otherwise = cHas it sense in other cases?
Haskell MultiWayIf extension: When is it considered useful syntactic sugar?
haskell;formatting
Unsurprisingly, it's mainly useful when the if is not the top-level expression. Say:forM_ [1..100] $ \i ->  putStrLn $ if | i `mod` 15 == 0  = FizzBuzz                | i `mod` 3 == 0   = Fizz                | i `mod` 5 == 0   = Buzz                | otherwise        = show iI happen across similar cases quite often - up to this point this required either deep if trees or mis-using case in some way.