function Parray(...) return setmetatable({...}, {__index = function(self, k) if type(k) == "number" and k < 0 then k = #self + 1 + k end return rawget(self, k) end }) end > t = Parray(1,2,3,4,5,6,7,8)> return t[7]7 > return t[-2]7