Arithmetic evaluation: Difference between revisions

m
(Added Emacs Lisp Example)
Line 2,346:
import Text.Parsec.Combinator
import Data.Functor
import Data.Function (on)
 
data Exp = Num Int
Line 2,359 ⟶ 2,360:
factor = (between `on` char) '(' ')' expr
<|> (Num . read <$> many1 digit)
on f g = \x y -> f (g x) (g y)
 
eval :: Num a => Exp -> a
eval e(Num =x) case e of= fromIntegral x
eval Div(Add a b) ->= eval a `div` + eval b
Num x -> fromIntegral x
eval Add(Sub a b) ->= eval a +- eval b
eval Sub(Mul a b) ->= eval a -* eval b
eval Mul(Div a b) ->= eval a * `div` eval b
Div a b -> eval a `div` eval b
 
solution :: Num a => String -> a
Anonymous user