module Language.Noodle.Lib.Math(env,decls) where
import Language.Noodle.Evaluation
env = extenv decls
decls = [("+",extop plus)
,("-",extop minus)
,("*",extop times)
,("/",extop divide)]
plus :: Val -> Val -> IO Val
plus (Number a) (Number b) = return $ Number (a+b)
plus _ _ = return $ srtError "Invalid operand: +"
minus (Number a) (Number b) = return $ Number (ab)
minus _ _ = return $ srtError "invalid operand: -"
times (Number a) (Number b) = return $ Number (a*b)
times _ _ = return $ srtError "invalid operand: *"
divide (Number _) (Number 0) = return $ srtError "divide by zero"
divide (Number a) (Number b) = return $ Number (a/b)
divide _ _ = return $ srtError "invalid operand: /"