Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2013

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Text based interface: $PreRead does not work as manual says.

  • To: mathgroup at smc.vnet.net
  • Subject: [mg130730] Re: Text based interface: $PreRead does not work as manual says.
  • From: Roland Franzius <roland.franzius at uos.de>
  • Date: Tue, 7 May 2013 03:54:28 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • Delivered-to: l-mathgroup@wolfram.com
  • Delivered-to: mathgroup-outx@smc.vnet.net
  • Delivered-to: mathgroup-newsendx@smc.vnet.net
  • References: <km7ic8$ic1$1@smc.vnet.net>

Am 06.05.2013 08:25, schrieb Alain Cochard:
> Here is an excerpt of
> http://reference.wolfram.com/mathematica/ref/$PreRead.html
>
>      Use as an alias for HoldForm:
>
>      In[1]:= $PreRead = ReplaceAll[#, "hf" -> "HoldForm"] &
>
>      Out[1]= #1 /. hf -> HoldForm &
>
>      In[2]:= {hf[2 + 3], hf[2/3]}
>
>                    2
>      Out[2]= {2+3, -]}
>                    3
>
> Using the text based interface, I try to reproduce the above:
>
>      Mathematica 9.0 for Linux x86 (64-bit)
>      Copyright 1988-2012 Wolfram Research, Inc.
>
>      In[1]:= $PreRead = ReplaceAll[#, "hf" -> "HoldForm"] &
>
>      Out[1]= #1 /. hf -> HoldForm &
>
>      In[2]:= {hf[2 + 3], hf[2/3]}
>
>                         2
>      Out[2]= {hf[5], hf[-]}
>                         3
>
>      In[3]:= hf
>
>      Out[3]= hf
>
>      In[4]:=?hf
>
>      Global`hf
>
>
> Other Mathematica version, other computer:
>
>     Mathematica 8.0 for Linux x86 (32-bit)
>     Copyright 1988-2011 Wolfram Research, Inc.
>
>     In[1]:= $PreRead = ReplaceAll[#, "hf" -> "HoldForm"] &
>
>     Out[1]= #1 /. hf -> HoldForm &
>
>     In[2]:= {hf[2 + 3], hf[2/3]}
>
>                        2
>     Out[2]= {hf[5], hf[-]}
>                        3
>
>     In[3]:= hf
>
>     Out[3]= HoldForm <<<< so here it understands a litte bit...
>
> And I get the same output as just above, with
>
>     Mathematica 7.0 for Linux x86 (64-bit)
>     Copyright 1988-2009 Wolfram Research, Inc.
>
> on yet another computer.
>
> However, it does work as expected when using the front end interface.
>
> Is this normal?
>
> I spent some time in the documentation and on the web for an alternative
> of $PreRead but did not find anything, apart from the obsolete "Alias"
> Mathematica function; I found a documentation here:
> http://reference.wolfram.com/legacy/v4-fr/OtherInformation/Alias_almark.html
> I tried the simple example which is provided, but it does not react as
> it should, neither with the text based nor the front end interfaces...
>
> Is there something I can do to restore the correct behavior of $PreRead,
> or use Alias, under the text based interface or is there an equivalent
> way for defining such aliases?


$Pre is working on the expression form of input, $PreRead on its input 
string form. enProcessing the string form of input into raw expression 
form, elemetary simplification by ordering takes place.

The lexicographic ordering of arithmetic expressions automatically 
performs counting equal subexpressions by implied attributed rules for 
Plus und Times like: OneIdentity, Flat and Orderless.

Consider the following

In[10]:= $PreRead :=
(ReplaceAll[#, {"+" :>  "-", "hf" -> "HoldForm"}] &)

In[11]:=
hf[a + 2 a]

Out[11]= \!\(\*TagBox[RowBox[{"a", "-",RowBox[{"2", " ", "a"}]}],
HoldForm]\)


-- 

Roland Franzius



  • Prev by Date: Re: Listable Attribute of Pure Function that returns a
  • Next by Date: Remote kernel fails to launch
  • Previous by thread: Text based interface: $PreRead does not work as manual says.
  • Next by thread: Re: Text based interface: $PreRead does not work as manual says.