Да, вы можете (я не вижу в этом смысла, и это будет медленнее, но это возможно):
do
local mem={}
function unsugar(op,a,b)
if mem[op] then
print('Fetched operation from memory')
return mem[op](a,b)
else
local f=loadstring('local a,b=...; return a '..op..' b')
mem[op]=f
return f(a,b)
end
end
end
print(unsugar('+',1,2)) -- = 3
print(unsugar('%',5,3)) -- = 2
print(unsugar('%',5,3)) -- = Fetched operation from memory \n 2
Редактировать : устранены шальные глобалы aи b, и запоминать для улучшения производительности, компилируя каждую операцию только один раз.