diff options
| -rw-r--r-- | neb/std/math.py | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/neb/std/math.py b/neb/std/math.py index 79ef332..7fcaec7 100644 --- a/neb/std/math.py +++ b/neb/std/math.py @@ -1,4 +1,4 @@ -from .. import TypeEnum, Environment, Arg, Builtin, evaluate, InterpretPanic +from .. import TypeEnum, Environment, Arg, Builtin, evaluate, InterpretPanic, MultiFunction from ..structs import * import math @@ -24,7 +24,10 @@ MATH.register(">=", Builtin(">=", interpretGreaterThanEqual, [compare_arg, compa def interpretLessThan(symbol, args, env, ns): return Bool(args[0].value < args[1].value) -MATH.register("<", Builtin("<", interpretLessThan, [compare_arg, compare_arg], return_type=Type(":bool"))) +lt_func = Builtin("<", interpretLessThan, [compare_arg, compare_arg], return_type=Type(":bool")) +lt_multi = MultiFunction("<") +lt_multi.register(lt_func) +MATH.register("<", lt_multi) def interpretAddition(symbol, args, env, ns): res = 0 @@ -36,7 +39,10 @@ def interpretAddition(symbol, args, env, ns): return Int(res) term_arg = Arg("term", TypeEnum.NUMBER) -MATH.register("+", Builtin("+", interpretAddition, [term_arg], term_arg, Type(":number"))) +add_func = Builtin("+", interpretAddition, [term_arg], term_arg, Type(":number")) +add_multi = MultiFunction("+") +add_multi.register(add_func) +MATH.register("+", add_multi) def interpretSubtraction(symbol, args, env, ns): if len(args) == 1: @@ -50,7 +56,10 @@ def interpretSubtraction(symbol, args, env, ns): else: return Int(res) -MATH.register("-", Builtin("-", interpretSubtraction, [term_arg], term_arg, Type(":number"))) +sub_func = Builtin("-", interpretSubtraction, [term_arg], term_arg, Type(":number")) +sub_multi = MultiFunction("-") +sub_multi.register(sub_func) +MATH.register("-", sub_multi) def interpretMultiplication(symbol, args, env, ns): res = args[0].value |
