SYNOPSIS
        mixed apply(closure cl, mixed arg, ...);

BESCHREIBUNG
        Wertet die Closure <cl> aus. Wenn <cl> keine Closure ist, wird <cl>
        unveraendert zurueck geliefert und alle Argumente <arg> werden
        ignoriert.

        Es gibt einen kleinen Unterschied zu funcall(), das ja im Wesentlichen
        das gleiche tut (naemlich, eine Closure auswerten): wenn das letzte
        Argument von apply() ein Array ist, wird jedes Element dieses Arrays
        zu einem separaten zusaetzlichen Parameter der Closure umgewandelt.

        Eine moegliche Anwendung waere:
            mixed eval(object ob,string func,mixed *args)
            {
                return apply(#'call_other,ob,func,args);
            }

        Das fuehrt zu folgenden Aufrufen:
            ob->func(args[0],args[1],...,args[sizeof(args)-1])

        Waere stattdessen funcall() aufgerufen worden, so haette das ergeben:
            ob->func(args)

        Eine wichtige Anwendung von apply() ist das Auswerten des
        Array-Arguments in "varargs" Funktionen.

AENDERUNGEN
        Eingefuehrt in 3.2@70.
        LDMud 3.2.8 fuehrte ein, dass das erste Argument zurueck gegeben wird,
            wenn es sich nicht um eine Closure handelt.

SIEHE AUCH
        funcall(E), closures(LPC), varargs(LPC)
