Clarification re. Curiosity concerning transformation rules for List
- To: mathgroup at smc.vnet.net
- Subject: [mg70947] Clarification re. Curiosity concerning transformation rules for List
- From: "Andrew Moylan" <andrew.j.moylan at gmail.com>
- Date: Thu, 2 Nov 2006 06:48:11 -0500 (EST)
I recently wrote:
----
Since the List symbol is locked, I am curious about the possibility (or
otherwise) of giving definitions for which the left-hand-side of the
transformation rule contains only the List symbol. Here's an arbitrary,
explicit example:
Is it possible to make a definition such that: any list of two
identical elements evaluates to the empty list? E.g. {x_, x_} -> {}.
I can't see any way this transformation rule can be added. It's not
possible to modify the DownValues for List; and there are no
first-level symbols to which an UpValue can be added. Does anyone have
any ideas?
----
I received some replies suggesting that I use my proposed rule
{x_,x_}->{} in combination with ReplaceAll to effect the transformation
on a case-by-case basis. However, I am interested in whether it is
possible to add a _definition_ so that the rule is _always_ applied.
I think I can clarify by way of an example:
Unprotect[Power];
Power[x_, x_] = 0;
Now 4^3 evaluates to 64 as usual, but 4^4 evaluates to 0. However, the
following fails because List has attribute Locked (as well as attribute
Protected):
Unprotect[List];
This doesn't mean that transformation rules involving lists cannot ever
be defined. We can use UpValues. For example:
AppendTo[UpValues[hello], {hello, x_} -> 0]
Now pairs with the symbol hello as their first element evaluate to
zero: {hello, 1} evaluates to 0. But other lists are not affected: {1,
2} evaluates to {1, 2}.
However, the only way it was possible to add that definition was by
attaching it as an UpValue for hello. Since there are no symbols in the
rule {x_,x_}->{} (except List, which is locked), is it possible to make
this definition? Is there a "global" set of transformation rules,
always applied, but not attached to any particular symbol?
I hope this is clearer, instead of less clear ;-).
Cheers,
Andrew
- Follow-Ups:
- Re: Clarification re. Curiosity concerning transformation rules for List
- From: "Chris Chiasson" <chris@chiasson.name>
- Re: Clarification re. Curiosity concerning transformation rules for List