En Lua, ¿cuál es la forma correcta de manejar varargs que contiene nil?

Estoy tratando de crear una función de impresión de depuración que tome un identificador de archivo como primer argumento. Primero, escribo una función como esta:

function fprint (f, ...)
   for i, v in ipairs{...} do
      f:write(tostring(v))
      f:write("\t")
   end
   f:write("\n")
end

Esta función funciona mientras no pasenil valor en argumentos. Pero si llamo a esto con unnil, no imprime elnil valor y resto de argumentos.

fprint(io.stderr, 1, 2, nil, 3)
=> prints only 1 and 2

Entonces, ¿cuál es la forma correcta de solucionar este problema?

Respuestas a la pregunta(2)

Su respuesta a la pregunta