diff options
| author | mryouse | 2022-06-26 01:31:14 +0000 | 
|---|---|---|
| committer | mryouse | 2022-06-26 01:31:14 +0000 | 
| commit | 182a05b85113631a611169a6724162ae9247b55e (patch) | |
| tree | 4524b495f79c1e71cf1f001edf274c7ccd6a495b /neb/std/types.py | |
| parent | 976c0a01e9e28d13037c9b1a5045789b3500d9fe (diff) | |
add return types to builtins
Diffstat (limited to 'neb/std/types.py')
| -rw-r--r-- | neb/std/types.py | 20 | 
1 files changed, 10 insertions, 10 deletions
| diff --git a/neb/std/types.py b/neb/std/types.py index b5fb993..f8d5405 100644 --- a/neb/std/types.py +++ b/neb/std/types.py @@ -6,33 +6,33 @@ TYPES = Environment()  def interpretIsBool(symbol, args, env, ns):      return Bool(isinstance(args[0], Bool)) -TYPES.register("bool?", Builtin("bool?", interpretIsBool, [Arg("arg", TypeEnum.ANY)])) +TYPES.register("bool?", Builtin("bool?", interpretIsBool, [Arg("arg", TypeEnum.ANY)], return_type=Type(":bool")))  def interpretIsFloat(symbol, args, env, ns):      return Bool(isinstance(args[0], Float)) -TYPES.register("float?", Builtin("float?", interpretIsFloat, [Arg("arg", TypeEnum.ANY)])) +TYPES.register("float?", Builtin("float?", interpretIsFloat, [Arg("arg", TypeEnum.ANY)], return_type=Type(":bool")))  def interpretIsNumber(symbol, args, env, ns):      ret = isinstance(args[0], Int) or isinstance(args[0], Float)      return Bool(ret) -TYPES.register("number?", Builtin("number?", interpretIsNumber, [Arg("arg", TypeEnum.ANY)])) +TYPES.register("number?", Builtin("number?", interpretIsNumber, [Arg("arg", TypeEnum.ANY)], return_type=Type(":bool")))  def interpretIsInt(symbol, args, env, ns):      return Bool(isinstance(args[0], Int)) -TYPES.register("int?", Builtin("int?", interpretIsInt, [Arg("arg", TypeEnum.ANY)])) +TYPES.register("int?", Builtin("int?", interpretIsInt, [Arg("arg", TypeEnum.ANY)], return_type=Type(":bool")))  def interpretIsList(symbol, args, env, ns):      return Bool(isinstance(args[0], List)) -TYPES.register("list?", Builtin("list?", interpretIsList, [Arg("arg", TypeEnum.ANY)])) +TYPES.register("list?", Builtin("list?", interpretIsList, [Arg("arg", TypeEnum.ANY)], return_type=Type(":bool")))  def interpretIsString(symbol, args, env, ns):      return Bool(isinstance(args[0], String)) -TYPES.register("string?", Builtin("string?", interpretIsString, [Arg("arg", TypeEnum.ANY)])) +TYPES.register("string?", Builtin("string?", interpretIsString, [Arg("arg", TypeEnum.ANY)], return_type=Type(":bool")))  def interpretStringToInt(symbol, args, env, ns):      try: @@ -41,7 +41,7 @@ def interpretStringToInt(symbol, args, env, ns):      except:          raise InterpretPanic(symbol, "can't convert to an :int", args[0]) -TYPES.register("string->int", Builtin("string->int", interpretStringToInt, [Arg("arg", TypeEnum.STRING)])) +TYPES.register("string->int", Builtin("string->int", interpretStringToInt, [Arg("arg", TypeEnum.STRING)], return_type=Type(":int")))  def interpretToString(symbol, args, env, ns):      item = args[0] @@ -52,7 +52,7 @@ def interpretToString(symbol, args, env, ns):      else:          return String(f"{item}") -TYPES.register("->string", Builtin("->string", interpretToString, [Arg("arg", TypeEnum.ANY)])) +TYPES.register("->string", Builtin("->string", interpretToString, [Arg("arg", TypeEnum.ANY)], return_type=Type(":string")))  def interpretTypeOf(symbol, args, env, ns):      return Type(f"{args[0].type_}") @@ -62,12 +62,12 @@ TYPES.register("typeof", Builtin("typeof", interpretTypeOf, [Arg("candidate", Ty  def interpretIsAny(symbol, args, env, ns):      return Bool(True) -TYPES.register("any?", Builtin("any?", interpretIsAny, [Arg("arg", TypeEnum.ANY)])) +TYPES.register("any?", Builtin("any?", interpretIsAny, [Arg("arg", TypeEnum.ANY)], return_type=Type(":bool")))  def interpretIsLiteral(symbol, args, env, ns):      return Bool(isinstance(args[0], Literal)) -TYPES.register("literal?", Builtin("literal?", interpretIsLiteral, [Arg("arg", TypeEnum.ANY)])) +TYPES.register("literal?", Builtin("literal?", interpretIsLiteral, [Arg("arg", TypeEnum.ANY)], return_type=Type(":bool")))  # add types to env  any_type = NebType(":any", None, interpretIsAny) | 
