The command apply applies the function func to the
arguments arg1 arg2 ... and returns the result.

The function func is a two element list {args
body} or a three element list {args body namespace} (as
if the list command had
been used). The first element args specifies the formal
arguments to func. The specification of the formal arguments
args is shared with the proc command, and is described in
detail in the corresponding manual page.

The contents of body are executed by the Tcl interpreter
after the local variables corresponding to the formal arguments are
given the values of the actual parameters arg1 arg2 ....
When body is being executed, variable names normally refer
to local variables, which are created automatically when referenced
and deleted when apply returns. One local variable is
automatically created for each of the function's arguments. Global
variables can only be accessed by invoking the global command or the upvar command. Namespace variables
can only be accessed by invoking the variable command or the upvar command.

The invocation of apply adds a call frame to Tcl's
evaluation stack (the stack of frames accessed via uplevel). The execution of
body proceeds in this call frame, in the namespace given by
namespace or in the global namespace if none was specified.
If given, namespace is interpreted relative to the global
namespace even if its name does not start with
“::”.