Re: Why does the order of down values come back?

• To: mathgroup at smc.vnet.net
• Subject: [mg124819] Re: Why does the order of down values come back?
• From: Leonid Shifrin <lshifr at gmail.com>
• Date: Wed, 8 Feb 2012 05:30:28 -0500 (EST)
• Delivered-to: l-mathgroup@mail-archive0.wolfram.com
• References: <jgo0e9\$a2k\$1@smc.vnet.net>

```A more precise statement would be that DownValues with Sort->False do not
and presumably expose the content of the rules just as they are kept in the
underlying hash-table. This does not however mean that they will come in
the order they were entered - since generally hash-table (at least the one
used to implement DownValues) does not guarantee you that. This happens to
be true for a small number of key-value pairs, but not in general. Try, for
example, this:

f[x_] := f[x] = x;

f /@ Range[100]

and then inspect the DownValues of f. Here is one relevant discussion I am
aware of:

http://stackoverflow.com/questions/7062268/what-sort-option-of-values-does/7063143#7063143

Cheers,
Leonid

On Tue, Feb 7, 2012 at 12:05 PM, Oleksandr Rasputinov <
oleksandr_rasputinov at ymail.com> wrote:

> On Mon, 06 Feb 2012 07:45:13 -0000, Shizu <slivo.vitz at msa.hinet.net>
> wrote:
>
> > In[]:= f[0] := 0;f[1] := 1;f[n_] := f[n - 1] + f[n - 2]
> >
> > In[]:= DownValues[f]
> > Out[]:= {HoldPattern[f[0]] :> 0, HoldPattern[f[1]] :> 1,
> > HoldPattern[f[n_]] :> f[n - 1] + f[n - 2]}
> >
> > In[]:= DownValues[f] = Reverse[DownValues[f]]
> > Out[]:= {HoldPattern[f[n_]] :> f[n - 1] + f[n - 2], HoldPattern[f[1]] :>
> > 1, HoldPattern[f[0]] :> 0}
> >
> > In[]:= DownValues[f]
> > Out[]:= {HoldPattern[f[0]] :> 0, HoldPattern[f[1]] :> 1,
> > HoldPattern[f[n_]] :> f[n - 1] + f[n - 2]}
> >
> > ====================================================
> > My question is:
> >
> >     Why does the order of down values comes back after reordering?
> >
> > Thanks.
> >
>
> Because DownValues sorts its output by default. The actual downvalues are
> not, however, sorted; the order is as you set them. To see their actual
> order, use the (undocumented) option:
>
> DownValues[f, Sort -> False]
>
>

```

• Prev by Date: Re: Formatting Input cell comments
• Next by Date: Kolmogorov Smirnov in two or more dimensions
• Previous by thread: Re: Why does the order of down values come back?
• Next by thread: Re: Why does the order of down values come back?