evalExtendedExpr (Fix (ExprBase (ExprBinOp l op r))) = evalL `evalOp` evalR
  where evalL = evalExtendedExpr l
        evalR = evalExtendedExpr r
        evalOp = case op of
                   Mul -> (*)
                   Div -> div
                   BinOpBase Add -> (+)
                   BinOpBase Sub -> (-)
--
evalExtendedExpr (Fix (ExprBase (ExprBinOp l op r))) = evalL `evalOp` evalR
  where evalL = evalExtendedExpr l
        evalR = evalExtendedExpr r
        evalOp = case op of
                   Mul -> (*)
                   Div -> div
                   BinOpBase Add -> (+)
                   BinOpBase Sub -> (-)
--
evalExtendedExpr (Fix (ExprBase (ExprBinOp l op r))) = evalL `evalOp` evalR
  where evalL = evalExtendedExpr l
        evalR = evalExtendedExpr r
        evalOp = case op of
                   Mul -> (*)
                   Div -> div
                   BinOpBase Add -> (+)
                   BinOpBase Sub -> (-)
--