Hi, For homework help I suggest you read http://haskell.org/haskellwiki/Homework_help and follow the links listed there.
Thanks, Neil 2010/12/5 Suresh <vai.c...@gmail.com>: > Dear Sir, > > My be this question will be funny for you but I am new in Haskel and > got only few lection and now I have to solve the question as test. Please > let me know about suitable api for this question. We have wrong code and > there is some test. Have to find out needed or suitable api and using these > we have to pass all the test. But still I am so poor on Haskel. Please give > me your good idea and material for this question. IF possible please give > some example to solve this problem. > > module Grammar where > > import Data.Set (Set) > import qualified Data.Set as Set > import Prelude hiding (Int) > > import Test.HUnit > > data Term = Int Integer > | Atom String > | Var String > | Pair (Term, Term) > | Tuple [Term] > > data Expr = Term Term > | Fun [Term] [Expr] > | Apply Expr [Expr] > | Assign Term Expr > > boundVariables :: Expr -> Set String > boundVariables _ = Set.empty > fromList:: Map X Y -> [(X, Y)] > > freeVariables :: Expr -> Set String > freeVariables _ = Set.empty > > tests = > let bv = boundVariables > fv = freeVariables > -- e0 := 'fun () -> ok end' > e0 = Fun [] [Term (Atom "ok")] > -- e1 := 'foo' > e1 = Term (Atom "foo") > -- e2 := 'fun (X, Y) -> F(X) end' > e2 = Fun [Var "X", Var "Y"] > [Apply (Term (Var "F")) [Term (Var "X")]] > -- e3 := 'fun (true) -> F = fun (X) -> Mul(X, X) end, Add(F(X), 10) > end' > e3 = Fun [Atom "true"] [ > Assign (Var "F") > (Fun [Var "X"] [ > Apply (Term (Var "Mul")) [ > Term (Var "X"), > Term (Var "X") > ] > ]), > Apply (Term (Var "Add")) [ > Apply (Term (Var "F")) [ > Term (Var "X") > ], > Term (Int 10) > ] > ] > -- e4 := 'fun () -> F(X), F = G end' > e4 = Fun [] [ > Apply (Term (Var "F")) [ > Term (Var "X") > ], > Assign (Var "F") (Term (Var "G")) > ] > -- e5 := 'fun () -> F = G, F(X) end' > e5 = Fun [] [ > Assign (Var "F") (Term (Var "G")), > Apply (Term (Var "F")) [ > Term (Var "X") > ] > ] in > runTestTT (test [ > bv e1 ~=? Set.empty > , fv e1 ~=? Set.empty > , bv e2 ~=? Set.fromList ["X", "Y"] > , fv e2 ~=? Set.fromList ["F"] > , bv e3 ~=? Set.fromList ["X", "F"] > , fv e3 ~=? Set.fromList ["Mul", "Add", "X"] > , bv e4 ~=? Set.fromList ["F"] > , fv e4 ~=? Set.fromList ["F", "G", "X"] > , bv e5 ~=? Set.fromList ["F"] > , fv e5 ~=? Set.fromList ["G", "X"] > ]) > > > > > Best regards > Suresh _______________________________________________ Yhc mailing list Yhc@haskell.org http://www.haskell.org/mailman/listinfo/yhc