From 6ee92c12a58637101e1cd54caea222630a2e9d4b Mon Sep 17 00:00:00 2001 From: mryouse Date: Wed, 6 Jul 2022 01:55:50 +0000 Subject: add a type to types called :type --- neb/std/types.py | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'neb/std') diff --git a/neb/std/types.py b/neb/std/types.py index 872f29a..0d3db03 100644 --- a/neb/std/types.py +++ b/neb/std/types.py @@ -74,6 +74,11 @@ def interpretIsHandle(symbol, args, env, ns): TYPES.register("handle?", Builtin("handle?", interpretIsHandle, [Arg("arg", TypeEnum.ANY)], return_type=Type(":bool"))) +def interpretIsType(symbol, args, env, ns): + return Bool(isinstance(args[0], TypeWrap)) + +TYPES.register("type?", Builtin("type?", interpretIsType, [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) @@ -84,6 +89,7 @@ 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) +type_type = NebType(":type", any_type, interpretIsType) TYPES.register(":any", any_type) TYPES.register(":literal", literal_type) @@ -94,3 +100,4 @@ TYPES.register(":number", number_type) TYPES.register(":int", int_type) TYPES.register(":float", float_type) TYPES.register(":handle", handle_type) +TYPES.register(":type", type_type) -- cgit v1.2.3