module Main where import qualified IO as IO import HW6 e11 = Var "x" e12 = "x" :\ Var "x" :$: Var "y" e13 = LetRec ("x" :=: Var "f") (Var "x") e21 = LetRec ("x" :!=: Var "f") (Var "y") e22 = LetRecs ["x" :!=: Var "f"] (Var "y") e23 = "x" :\ ReadV "x" e31 = e12 e32 = [e13] e33 = ["f" :\ e13] e34 = ["x" :\ Var "x", Skip, Con 3] main = do try 1 $ ["x"] == (freeVars e11) try 2 $ ["y"] == (freeVars e12) try 3 $ ["f"] == (freeVars e13) try 4 $ (LetRec ("x" :=: (MkRef $ Var "f")) (Var "y")) == desugar e21 try 5 $ (LetRec ("x" :=: (MkRef $ Var "f")) (Var "y")) == desugar e22 try 6 $ ("x" :\ Read (Var "x")) == desugar e23 try 7 $ not $ allClosed e31 try 8 $ not $ allClosed e32 try 9 $ allClosed e33 try 10 $ allClosed e34 return 0 try num bool = if bool then return () else IO.print ("Test " ++ show num ++ " failed")