Re: DownValues question
- To: mathgroup at smc.vnet.net
- Subject: [mg70075] Re: DownValues question
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Mon, 2 Oct 2006 00:33:49 -0400 (EDT)
- References: <efld9n$d49$1@smc.vnet.net>
Hi,
you are sure that
DownValues[f] = Reverse[DownValues[f]]
"(re)assign a new value to DownValues"
and not to DownValues[f] ??
Regards
Jens
dimmechan at yahoo.com wrote:
> One more question. (I apologise for the number of questions).
>
> The following rule is not allowed
>
> x + y = z
> Set::write : Tag Plus in x + y is Protected.
> z
>
> since Plus has the attribute Protected.
>
> If you want to avoid the drastic way of Unprotect Plus and add the rule
>
> you can use
>
> x /: x + y = z
> z
>
> Suppose now the following
>
> Clear[f]
> f[x_, 2] := foo
> f[2, x_] := foofoo
>
> Then
>
> DownValues[f]
> {HoldPattern[f[x_, 2]] :> foo, HoldPattern[f[2, x_]] :> foofoo}
>
> If you want, you can change the order that assigned down values are
> stored by
>
> DownValues[f] = Reverse[DownValues[f]]
> {HoldPattern[f[2, x_]] :> foofoo, HoldPattern[f[x_, 2]] :> foo}
>
> However
>
> Attributes[DownValues]
> {HoldAll, Protected}
>
> Using Set we attach a value to the head of the left-hand side.
> So, how we can (re)assign a new value to DownValues if its Head
> has the attribute Protected?
>
> Thanks in advance for any help.
>