SYNOPSIS
        mixed *filter(mixed *arg, string func, string|object ob,
            mixed extra...);
        mixed *filter(mixed *arg, closure cl, mixed extra...);
        mixed *filter(mixed *arg, mapping map, mixed extra...);
        mapping filter(mapping arg, string func, string|object ob,
            mixed extra...);
        mapping filter(mapping arg, closure cl, mixed extra...);

BESCHREIBUNG
        Ruft fuer jedes Element des Arrays oder Mappings <arg> die Funktion
        <ob>-><func>() bzw. die Closure <cl> auf und liefert jene Elemente,
        fuer die die Funktion / Closure TRUE ergeben hat. Die <extra>
        Argumente werden als zusaetzliche Parameter an die Funktion
        uebergeben und duerfen keine Referenzen von Array- oder Mapping-
        Elementen sein (wie &(i[1]) ).

        Wird <ob> nicht angegeben oder ist es weder ein String noch ein
        Objekt, wird standardmaessig this_object() verwendet.

        Ist <arg> ein Array, wird <fun> mit jedem Element des Arrays als
        ersten Parameter aufgerufen, gefolgt von den <extra> Argumenten.
        Wenn das Resultat der Funktion TRUE ergibt, wird das Element in das
        Ergebnis der filter() Operation mit einbezogen.

        Wird filter() mit einem Mapping <map> anstelle der Funktion <func>
        aufgerufen, wird jedes Element im Array <arg>, das ein Key von <map>
        ist, ins Ergebnis mit einbezogen.

        Wenn <arg> ein Mapping ist, wird die Funktion <func> mit jedem Key
        als erstem und (falls vorhanden) den Werten dieses Keys als restliche
        Parameter, gefolgt von den <extra> Argumenten, aufgerufen. Wenn die
        Funktion TRUE ergibt, wird das betreffende Element des Mappings ins
        Ergebnis aufgenommen.

        Abhaengig von der Groesse des Mappings <arg> erfolgt der Aufruf der
        Funktion auf drei unterschiedliche Arten:

            widthof(arg) == 0:  ob->func(key, 0, extra,...);
            widthof(arg) == 1:  ob->func(key, arg[key], extra, ...);
            widthof(arg) >1:    ob->fund(key, ({arg[key,0]...arg[key, n-1]}),
                                     extra, ...);

        Der Vorteil dieser Vorgehensweise ist, dass beide Typen von
        multidimensionalen Mappings (Mappings mit mehreren Werte pro Key und
        Mappings aus Arrays) gleich verarbeitet werden koennen.

AENDERUNGEN
        Eingefuehrt in LDMud 3.2.6. Die Funktion loest filter_array() ab.

ANMERKUNG
        Fuer Arrays wirkt filter() wie filter_array(), fuer Mappings stellt
        filter() eine Verallgemeinerung von filter_indices() dar.

SIEHE AUCH
        filter(E), filter_indices(E), map(E), walk_mapping(E), member(E),
        m_contains(E)
