Re: Just another Mathematica "Gotcha", and HoldForm bug
- To: mathgroup at smc.vnet.net
- Subject: [mg120829] Re: Just another Mathematica "Gotcha", and HoldForm bug
- From: "Oleksandr Rasputinov" <oleksandr_rasputinov at hmamail.com>
- Date: Fri, 12 Aug 2011 05:04:17 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <j1r5d3$fi4$1@smc.vnet.net> <j1tnpf$pnu$1@smc.vnet.net>
On Thu, 11 Aug 2011 17:01:50 +0100, Oleksandr Rasputinov <oleksandr_rasputinov at hmamail.com> wrote: > On Thu, 11 Aug 2011 10:12:07 +0100, Richard Fateman > <fateman at cs.berkeley.edu> wrote: > >> In looking at examples, I think I found a bug, but maybe >> it is a feature? >> >> Did you know that >> >> HoldForm[x //@ y] returns x//@y >> but >> HoldForm[x // y] returns y[x] >> >> ? >> (version 7.0). >> > > //@ is a sigil representing the infix form of MapAll. An interpretation > of the first expression as postfix immediately followed by prefix > function application which you seem to be suggesting as a possibility > would not be meaningful: what would its (syntactically correct) FullForm > be? > On further consideration it strikes me that I may have misunderstood what you meant here. HoldForm is simply printing the expressions in InputForm, so for example we also have HoldForm[MapAll[x,y]] printing: x //@ y Conversion between two equivalent syntactic forms (postfix notation, and InputForm) is not considered to be a form of evaluation; it is simply the way in which the expressions are parsed. If you want an expression that prints in a particular way you can use HoldForm@Postfix[x // y] or indeed HoldForm@FullForm[MapAll[x, y]] both of which print retaining the expressions in the forms specified.