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 (a-b) 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: /"