let interpret(code) = do memory = map() pointer = 0 code_ptr = 0 loops = [] while (code_ptr < code.length) do command = code[code_ptr] if (command == '>') pointer = pointer + 1 else if (command == '<') pointer = pointer - 1 else if (command == '+') do if (pointer not in memory) memory[pointer] = 0 memory[pointer] = memory[pointer] + 1 else if (command == '-') do if (pointer not in memory) memory[pointer] = 0 memory[pointer] = memory[pointer] - 1 else if (command == '.') term.log((memory.get(pointer, 0))) else if (command == ',') memory[pointer] = ord(input()) else if (command == '[') do if (memory.get(pointer, 0) == 0) do loop_depth = 1 while (loop_depth > 0) do code_ptr = code_ptr + 1 if (code[code_ptr] == '[') loop_depth = loop_depth + 1 else if (code[code_ptr] == ']') loop_depth = loop_depth - 1 else loops.append(code_ptr) else if (command == ']') do if (memory.get(pointer, 0) != 0) code_ptr = loops[-1] else loops.pop() code_ptr = code_ptr + 1 interpret('>+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.>>>++++++++[<++++>-]<.>>>++++++++++[<+++++++++>-]<---.<<<<.+++.------.--------.>>+.>++++++++++.')