operator :: AST.OperatorFunction -> Parser AST.Operator
operator op = ranged $ do
  Token.reservedOp str
  return (AST.Operator op)
  where str = case op of
          AST.Add -> "+"
          AST.Sub -> "-"
          AST.Mul -> "*"
          AST.Div -> "/"
operator :: AST.OperatorFunction -> Parser AST.Operator
operator op = ranged $ do
  Token.reservedOp str
  return (AST.Operator op)
  where str = case op of
          AST.Add -> "+"
          AST.Sub -> "-"
          AST.Mul -> "*"
          AST.Div -> "/"
operator op = ranged $ do
  Token.reservedOp str
  return (AST.Operator op)
  where str = case op of
          AST.Add -> "+"
          AST.Sub -> "-"
          AST.Mul -> "*"
          AST.Div -> "/"