From fb1f8d3a02908e2fe8c08924c2eacef6b84a7204 Mon Sep 17 00:00:00 2001 From: Raymond Hogenson Date: Fri, 18 May 2018 12:01:22 -0800 Subject: Support exponentiation Haskell might make this overcomplicated, but it's a complicated problem to solve, I suppose. Whatever. It works well. --- Expr.hs | 2 ++ 1 file changed, 2 insertions(+) (limited to 'Expr.hs') diff --git a/Expr.hs b/Expr.hs index 2210735..6e12a87 100644 --- a/Expr.hs +++ b/Expr.hs @@ -30,6 +30,7 @@ data Expr = Plus Expr Expr | Minus Expr Expr | Times Expr Expr | Div Expr Expr + | Pow Expr Expr | EInt Integer | EFloat Double | E @@ -66,6 +67,7 @@ prefix name fun = Prefix (fun <$ tokenS name) table :: [[Operator String u Data.Functor.Identity.Identity Expr]] table = [ [ prefix "log" Log, prefix "sin" Sin, prefix "cos" Cos, prefix "sqrt" Sqrt ] , [ prefix "-" Negate ] + , [ binary "^" Pow AssocLeft ] , [ binary "*" Times AssocLeft , binary "/" Div AssocLeft ] -- cgit v1.3.1