import qualified EvalRPN as E
import qualified EvalRPN_trans as E1
import qualified EvalRPN_trans2 as E2
import Control.Monad (mapM_, when)
import Data.Maybe
rpns = ["42",
"12 13 +",
"2 3 3 * + 5 *",
"1 1 2 + 2 2 1 2 + * + * 1 3 2 * + + +",
"13 2 12 2 1 2 13 2 + + + + + + +",
"1 2 132 22 1 22 0 2 * * * * * * *",
"10 1 2 + 2 2 1 2 * + * * * 1 3 2 + + +"]
showEvalRes :: String -> String
showEvalRes e = e ++ " = " ++ maybe "ERROR" show (E1.evalRPN e)
main = do
print $ E.evalRPN "2 3 +"
print $ E1.evalRPN "2 x +"
print $ E2.evalRPN "x 3 +"
let res1 = map E1.evalRPN rpns
mapM_ (putStrLn . showEvalRes) rpns
let res2 = map E2.evalRPN rpns
when (res1 == res2) $ putStrLn "E2 OK"