diff options
| -rw-r--r-- | interpreter.py | 13 | 
1 files changed, 12 insertions, 1 deletions
| diff --git a/interpreter.py b/interpreter.py index c491150..0905368 100644 --- a/interpreter.py +++ b/interpreter.py @@ -356,6 +356,17 @@ GLOBALS.register("strip", Builtin(interpretStrip, 1))  #  - string->int and string->float  #  - split a string by a given field +def interpretSplit(symbol, args, env): +    target = evaluate(args[0], env) +    if not isinstance(target, str): +        raise Exception("'split' expects a string") +    splitter = evaluate(args[1], env) +    if not isinstance(splitter, str): +        raise Exception("'split' expects a string as it's splitter") +    return List(target.split(splitter)) + +GLOBALS.register("split", Builtin(interpretSplit, 2)) +      #  - get the length of a list  def interpretListLength(symbol, args, env):      ev = evaluate(args[0], env) @@ -397,7 +408,7 @@ def interpretMap(symbol, args, env):      out = []      for arg in lst.args:          ev = evaluate(List([func, arg]), env) -        out.append(ev) +        out.append(Literal(ev)) # TODO this is probably wrong      return List(out)  GLOBALS.register("map", Builtin(interpretMap, 2)) | 
