aboutsummaryrefslogtreecommitdiff
path: root/std.py
diff options
context:
space:
mode:
authormryouse2022-05-12 02:32:51 +0000
committermryouse2022-05-12 02:32:51 +0000
commit9a8324315c74ea102e0fb0ed22c695ce78c221c7 (patch)
tree6dc64024529eb702d181aa439e7e167363e5b2ab /std.py
parentbf03d7a6a1c70c1da988b9cb4bb44e77ab3934ce (diff)
native type compare methods
Diffstat (limited to 'std.py')
-rw-r--r--std.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/std.py b/std.py
index 26c6793..235d560 100644
--- a/std.py
+++ b/std.py
@@ -73,6 +73,30 @@ def std_is_string(arg):
else:
return NebBool(False)
+def std_is_int(arg):
+ if isinstance(arg, NebInt):
+ return NebBool(True)
+ else:
+ return NebBool(False)
+
+def std_is_float(arg):
+ if isinstance(arg, NebFloat):
+ return NebBool(True)
+ else:
+ return NebBool(False)
+
+def std_is_number(arg):
+ if isinstance(arg, NebNumber):
+ return NebBool(True)
+ else:
+ return NebBool(False)
+
+def std_is_bool(arg):
+ if isinstance(arg, NebBool):
+ return NebBool(True)
+ else:
+ return NebBool(False)
+
def evaluate_expression(expr):
if not expr.symbol.name in STD:
raise Exception(f"no such symbol: {expr.symbol.name}")
@@ -136,5 +160,13 @@ def build_std():
# type checking
is_string = FuncImpl(NebFunction("string?", [NebAny], NebBool), std_is_string)
STD["string?"] = [is_string]
+ is_int = FuncImpl(NebFunction("string?", [NebAny], NebBool), std_is_int)
+ STD["int?"] = [is_int]
+ is_float = FuncImpl(NebFunction("string?", [NebAny], NebBool), std_is_float)
+ STD["float?"] = [is_float]
+ is_number = FuncImpl(NebFunction("string?", [NebAny], NebBool), std_is_number)
+ STD["number?"] = [is_number]
+ is_bool = FuncImpl(NebFunction("string?", [NebAny], NebBool), std_is_bool)
+ STD["bool?"] = [is_bool]
build_std()