lua (Syntax): Calling a function that returns more than 1 value, and using those values as arguments, but without extra lines of variable assignment?

Solution for lua (Syntax): Calling a function that returns more than 1 value, and using those values as arguments, but without extra lines of variable assignment?
is Given Below:

I have a situation where I need to call the following:

function xy(i)
return i,i+8
end

And use its output in another function.

function addition(x,y)
return x+y
end

Is there a way to get this to work more elegantly than writing it like:

i.e. i=10; x,y=xy(10); addition(x,y)--28

I’m looking for something like:

i.e. i=10; addition(xy(10)--where I somehow get two arguments here)

Both functions are generics used elsewhere, merging isn’t viable, possible edits to what/how they return might be.

At least as of Lua 5.1, the following works ‘as requested’.

When a function call is the last (or the only) argument to another call, all results from the first call go as arguments. [There are several examples using print.]

function xy(i)
    return i,i+8
end

function addition(x,y)
    return x+y
end


addition(xy(10)) -- 28

A more wordy way, that might be useful to decompose in similar cases needing a little bit more flexibility, is to convert the result to a table and then use unpack (added in 5.1). This approach is result -> table -> unpack -> arguments (per above).

addition(unpack({xy(10)})) -- 28

Here are both approaches in replit.