aboutsummaryrefslogtreecommitdiff
path: root/neb/std/types.py
diff options
context:
space:
mode:
authormryouse2022-07-05 03:24:49 +0000
committermryouse2022-07-05 03:24:49 +0000
commit2402523aa84780447e3ce0a8109a14e1286665c8 (patch)
tree8bb4792c24154defbb046ca17a879bbb01da94b0 /neb/std/types.py
parentdb0327ba8c9fae4a57f85f60e2f0bac438781b8e (diff)
parentcf0ae625ddc9076e0ca02079b8d461de22244998 (diff)
Merge branch 'master' into feature/listtypes
Diffstat (limited to 'neb/std/types.py')
-rw-r--r--neb/std/types.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/neb/std/types.py b/neb/std/types.py
index 01e4fb3..9cd8e6d 100644
--- a/neb/std/types.py
+++ b/neb/std/types.py
@@ -88,6 +88,11 @@ def interpretIsLiteral(symbol, args, env, ns):
TYPES.register("literal?", Builtin("literal?", interpretIsLiteral, [Arg("arg", TypeEnum.ANY)], return_type=Type(":bool")))
+def interpretIsHandle(symbol, args, env, ns):
+ return Bool(isinstance(args[0], Handle))
+
+TYPES.register("handle?", Builtin("handle?", interpretIsHandle, [Arg("arg", TypeEnum.ANY)], return_type=Type(":bool")))
+
# add types to env
any_type = NebType(":any", None, interpretIsAny)
literal_type = NebType(":literal", any_type, interpretIsLiteral)
@@ -98,6 +103,7 @@ bool_type = NebType(":bool", literal_type, interpretIsBool)
number_type = NebType(":number", literal_type, interpretIsNumber)
int_type = NebType(":int", number_type, interpretIsInt)
float_type = NebType(":float", number_type, interpretIsFloat)
+handle_type = NebType(":handle", any_type, interpretIsHandle)
TYPES.register(":any", any_type)
TYPES.register(":literal", literal_type)
@@ -108,3 +114,4 @@ TYPES.register(":bool", bool_type)
TYPES.register(":number", number_type)
TYPES.register(":int", int_type)
TYPES.register(":float", float_type)
+TYPES.register(":handle", handle_type)