можно так
local function wrap(fn, desc)
return setmetatable({}, {
__call = function (_, ...) return fn(...) end,
__tostring = function () return desc end
})
end
local test = {
something = wrap(function ()
return 42
end, "function (): number -- does cool things")
}
print(tostring(test.something), test.something())
= в оболочке луа просто показывает ключи таблицы и их содержимое при помощи tostring(). такой вариант пойдет.