testExprs :: [MoleculeExpr]
testExprs = [
    EApp (EAbs "x" (EVar "x" :+: EVar "x")) (EInt 10)
  , EAbs "x" (EVar "x" :+: EVar "x")
  , EApp (EAbs "x" (EVar "x")) (EInt 8)
  , EApp (EApp (EAbs "x" (EAbs "y" (EVar "x" :+: EVar "y"))) (EInt 10)) (EInt 10)
  , EInt 10
  , ETrue
  , EFalse
  , EApp (EAbs "x" ETrue) (EInt 10)
  , EAbs "x" ((EVar "x") :+: EInt 80)
  , EAbs "x" ((EVar "x") :|: ETrue)
  , EApp (EAbs "x" ETrue) (EVar "x")
  , EApp (EAbs "x" $ EApp (EVar "x") (EInt 10)) (EAbs "y" (EVar "y"))
  ]
testExprs :: [MoleculeExpr]
testExprs = [
    EApp (EAbs "x" (EVar "x" :+: EVar "x")) (EInt 10)
  , EAbs "x" (EVar "x" :+: EVar "x")
  , EApp (EAbs "x" (EVar "x")) (EInt 8)
  , EApp (EApp (EAbs "x" (EAbs "y" (EVar "x" :+: EVar "y"))) (EInt 10)) (EInt 10)
  , EInt 10
  , ETrue
  , EFalse
  , EApp (EAbs "x" ETrue) (EInt 10)
  , EAbs "x" ((EVar "x") :+: EInt 80)
  , EAbs "x" ((EVar "x") :|: ETrue)
  , EApp (EAbs "x" ETrue) (EVar "x")
  , EApp (EAbs "x" $ EApp (EVar "x") (EInt 10)) (EAbs "y" (EVar "y"))
  ]
testExprs = [
    EApp (EAbs "x" (EVar "x" :+: EVar "x")) (EInt 10)
  , EAbs "x" (EVar "x" :+: EVar "x")
  , EApp (EAbs "x" (EVar "x")) (EInt 8)
  , EApp (EApp (EAbs "x" (EAbs "y" (EVar "x" :+: EVar "y"))) (EInt 10)) (EInt 10)
  , EInt 10
  , ETrue
  , EFalse
  , EApp (EAbs "x" ETrue) (EInt 10)
  , EAbs "x" ((EVar "x") :+: EInt 80)
  , EAbs "x" ((EVar "x") :|: ETrue)
  , EApp (EAbs "x" ETrue) (EVar "x")
  , EApp (EAbs "x" $ EApp (EVar "x") (EInt 10)) (EAbs "y" (EVar "y"))
  ]