packages feed

Hs2lib-0.5.7: Tests/Exec/Example.hs

{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE DeriveDataTypeable #-}
module Tests.Exec.Example where

import Tests.Exec.Default

data Expr = Mul Expr Expr
          | Div Expr Expr
          | Sub Expr Expr
          | Add Expr Expr
          | Parens Expr
          | Val Int
          | Var String
          | Let String Expr Expr
         
-- @@ Export         
printExpr :: Expr -> String
printExpr (Mul   e1 e2) = printExpr e1 ++ " * " ++ printExpr e2
printExpr (Div   e1 e2) = printExpr e1 ++ " / " ++ printExpr e2
printExpr (Sub   e1 e2) = printExpr e1 ++ " - " ++ printExpr e2
printExpr (Add   e1 e2) = printExpr e1 ++ " + " ++ printExpr e2
printExpr (Parens    e) = "(" ++ printExpr e ++ ")"
printExpr (Val       i) = show i
printExpr (Var     str) = str
printExpr (Let v e1 e2) = "Let " ++ v ++ " = " ++ printExpr e1 ++ " in " ++ printExpr e2

deriving instance Data Expr
deriving instance Typeable Expr
deriving instance Eq   Expr