Toy brainf**k interpreter; example app that can be modified without restarting
eval = function(code, data)
	local cp, dp = 1, data.p
	while cp <= #code do
		local inst = code:sub(cp,cp)
		if inst == '<' then
			dp = dp-1
		elseif inst == '>' then
			dp = dp+1
		elseif inst == '+' then
			if data[dp] == nil then data[dp] = 0 end
			data[dp] = data[dp]+1
		elseif inst == '-' then
			if data[dp] == nil then data[dp] = 0 end
			data[dp] = data[dp]-1
		elseif inst == '[' then
			if data[dp] == 0 then
				cp = code:find(']', cp, --[[plain]] true)
			end
		elseif inst == ']' then
			if data[dp] ~= 0 then
				cp = rfind(code, '[' , cp, --[[plain]] true)
			end
		elseif inst == '.' then
			Out.editor.lines[1].data = Out.editor.lines[1].data..string.char(data[dp])
			Text.redraw_all(Out.editor)
			--print(string.char(data[dp]))
			--print(data[dp])
		elseif inst == ',' then
			--data[dp] = string.byte(io.read(1))
			if #In.editor.lines[1].data > 0 then
				data[dp] = string.byte(In.editor.lines[1].data:sub(1,1))
			else
				data[dp] = 0
			end
			In.editor.lines[1].data = In.editor.lines[1].data:sub(2)
		elseif inst == '#' then
			cp = code:find('\n', cp)
			if cp == nil then break end
		end
		cp = cp+1
	end
	data.p = dp
end