Haskellのレイアウトルール

Haskellのレイアウトルールを使ったプログラム(ブレースやセミコロンを使わないスタイル) をブレースやセミコロンを明示的に使うスタイルに変換します。
Haskellプログラムを入力して下さい。
(“式”ではなくて、“プログラム”を入力する必要があります。)

入力例(コピペして使って下さい):
f x = let a = 1; b = 2
          g y = exp2
      in exp1 
a =  let f x y =  
	   case x of 
	      0 -> foo x 2
	      1 -> bar 1 x 999999
	             3 4 5
	      _ -> baz 6 x
	    +
	   case y of 2 -> qux 9 y 1 
	             _ -> quux y  in f 0 1
x = let foo = let { 
      x = 0; y = 1;
      z = 2 } 
	 in x * y
	bar = 99 in foo*bar

Koji Kagawa