SYNOPSIS
        mixed unique_array(object *obj, string|closure fun)
        mixed unique_array(object *obj, string|closure fun, mixed skip)
        mixed unique_array(object *obj, string|closure fun, mixed extra...
                                      , mixed skip)

BESCHREIBUNG
        Gruppiert alle Objekte aus <*obj>, fuer die die Funktion <fun>
        den gleichen Wert liefert. Wenn <*obj> etwas anderes als Objekte
        enthaelt, werden diese ignoriert.
        
        Ist die Funktion mit Namen angegeben, wird sie in jedem Objekt
        in <*obj> einmal aufgerufen. Wurden <extra> Argumente
        gegeben, werden diese an die Funktion bei jedem Aufruf als
        Parameter uebergeben.

        Ist die Funktion als Closure angegeben, wird sie fuer jedes Objekt
        in <*obj> einmal aufgerufen, wobei das Objekt als erstes Argument
        uebergeben wird, gefolgt von etwaiigen <extra> Argumenten.

        Wird ein Argument <skip> angegeben (bei Verwendung von <extra>
        Argumenten muss dies geschehen), und entspricht <skip> dem
        Resultat von <separator> fuer ein Element aus <*obj>, so wird
        dieses Element nicht in das Resultat von unique_array()
        uebernommen.
        
        Das Resultat von unique_array() hat die Form:

            ({ ({same1:1, same1:2, ... same1:n}),
               ({same2:1, same2:2, ... same2:n}),
               ({samem:1, samem:2, ... samem:n}) })

BEISPIEL
        Um ein Array von Arrays zu erhalten, das alle Benutzer, nach Level
        gruppiert, enthaelt:

            mixed *arr;
            arr=unique_array(users(), "_query_level", -1);

        Goetter haben einen Level von -1. Sie werden nicht in arr aufgenommen,
        weil <skip> == -1.

SIEHE AUCH
      Arrays:       filter(E), map(E)
      Objektarrays: filter_objects(E), map_objects(E)
      Mappings:     filter(E), map(E), filter_indices(E), map_indices(E)

