aboutsummaryrefslogtreecommitdiff
path: root/neb
diff options
context:
space:
mode:
Diffstat (limited to 'neb')
-rw-r--r--neb/std/math.py17
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