) where
import Control.Applicative ((<$>))
-import Data.Ratio (numerator, denominator, (%))
+import Data.Ratio (numerator, denominator)
import Data.List (foldl')
import Data.Map (Map)
import qualified Data.Map as Map
evalPow' (FloatLiteral x) (FloatLiteral y) = Just . FloatLiteral $ x ** y
evalPow' (RationalLiteral x) (RationalLiteral y) = if (denominator y) == 1
then let power = numerator y in
- Just . RationalLiteral $ (numerator x ^ power) % (denominator x ^ power)
+ Just . RationalLiteral $ if power >= 0
+ then x ^ power
+ else (recip x) ^ (- power)
else Nothing
evalPow' _ _ = Nothing
evalPow _ _ = Nothing