Re: Unsorted Union

*To*: mathgroup at smc.vnet.net*Subject*: [mg61485] Re: Unsorted Union*From*: "dkr" <dkrjeg at adelphia.net>*Date*: Wed, 19 Oct 2005 23:07:42 -0400 (EDT)*References*: <dj4p6t$gpt$1@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

Robert, Consider the first element of x, call it x1. Using the definition of the function f, it will generate the value x1 (and also store the value f[x1] as Sequence[]). Note that since this is the first time x1 has been encountered in the mapping operation, there won't be a previously stored value of f[x1]. Now as we proceed through the elements of x, suppose we encounter x1 again. Then mathematica will already have stored the value f[x1], and will use it to generate the value Sequence[], which effectively removes that x1 from the list. Robert Schoefbeck wrote: > Hello all, > > in the help section i found the following thing: > > UnsortedUnion[x_] := Module[{f}, f[y_] := (f[y] = Sequence[]; y); f/@x] > > It does just what it says: > UnsortedUnion[{a,c,b,d,a,b}]={a,c,b,d} > > (ordinary Union would Sort the result) > > my question is: How does the definition work? I know all the syntax > and i have been using these concepts for for some time now. But i cant > figure out what this definition does. > > Robert