MathGroup Archive 2006

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

Search the Archive

Re: delayed rule evaluation order

  • To: mathgroup at smc.vnet.net
  • Subject: [mg68002] Re: [mg67967] delayed rule evaluation order
  • From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
  • Date: Thu, 20 Jul 2006 06:04:44 -0400 (EDT)
  • References: <11710934.1153306359682.JavaMail.root@eastrmwml07.mgt.cox.net> <acbec1a40607190514x62d0f07byeb91cf8b496bca33@mail.gmail.com>
  • Sender: owner-wri-mathgroup at wolfram.com

It seems to me that a variant of my first suggestion works fine:

In[1]:=
f[1]=1;
f[n_Integer]/;n>1=n f[n-1];
InputForm[z=Trace[f[2]]];
InputForm[z/.{HoldForm[a_]:>HoldForm@@{SetPrecision[a,3]}}]

Out[4]//InputForm=
{HoldForm[2.`2.9999999999999973],
{HoldForm[True], HoldForm[True]},
HoldForm[2.`2.9999999999999973],
{{HoldForm[1.`2.9999999999999973],
    HoldForm[1.`2.9999999999999973]},
   HoldForm[1.`2.9999999999999973],
   HoldForm[1.`2.9999999999999973]},
HoldForm[2.`2.9999999999999973],
HoldForm[2.`2.9999999999999973]}

Or is this not what you wanted?

Andrzej Kozlowski



On 19 Jul 2006, at 14:14, Chris Chiasson wrote:

> Thanks to Kozlowski's, Hanlon's and Pein's solutions (haven't received
> any others so far), I am now using this type of replacement:
>
> Hold[5.55555555]/.{blah_?InexactNumberQ:>
>        junk[SetPrecision[blah,3]]}/.junk->Evaluate
>
> Hold[5.56]
>
> However, this still does not totally work on Trace's output:
>
> In[1]:=
> f[1]=1;
> f[n_Integer]/;n>1=n f[n-1];
> InputForm[z=Trace[f[2]]]
>
> Out[3]//InputForm=
> {HoldForm[f[2]], {HoldForm[2 > 1], HoldForm[True]}, HoldForm[2*f[-1  
> + 2]],
>  {{HoldForm[-1 + 2], HoldForm[1]}, HoldForm[f[1]], HoldForm[1]},
> HoldForm[2*1], HoldForm[2]}
>
> In[4]:=
> InputForm[z/.{blah_?ExactNumberQ:>junk[SetPrecision[blah,3]]}/.junk- 
> >Evaluate]
>
> Out[4]//InputForm=
> {HoldForm[2.`2.9999999999999996], {HoldForm[Evaluate[SetPrecision[2,
> 3]] > Evaluate[SetPrecision[1, 3]]],
>  HoldForm[True]}, HoldForm[2.`2.9999999999999996],
>  {{HoldForm[1.`2.9999999999999996], HoldForm[1.`2.9999999999999996]},
> HoldForm[1.`2.9999999999999996],
>  HoldForm[1.`2.9999999999999996]}, HoldForm[2.`2.9999999999999996],
> HoldForm[2.`2.9999999999999996]}
>
> Notice the leftover Evaluate and SetPrecision commands. Does anyone
> have ideas on how to get this to work?
>
> On 7/19/06, Bob Hanlon <hanlonr at cox.net> wrote:
>> Hold[{2, 3}] /.
>>   {Hold[{x_, y_}] :> Hold[Evaluate[x^y]]}
>>
>> Hold[8]
>>
>>
>> Bob Hanlon
>>
>> ---- Chris Chiasson <chris at chiasson.name> wrote:
>> > Hold[{2, 3}] /. {{x_, y_} :> x^y}
>> >
>> > the result is Hold[Power[2,3]]
>> >
>> > I would like the result to be Hold[8]
>> >
>> > The original context is post-processing of a large Trace output  
>> (via
>> > SetPrecision to get rid of digits and improve readability).
>> >
>> > Any ideas?
>> >
>> > --
>> > http://chris.chiasson.name/
>> >
>>
>> --
>>
>> Bob Hanlon
>> hanlonr at cox.net
>>
>>
>>
>
>
> -- 
> http://chris.chiasson.name/


  • Prev by Date: Re: Norm
  • Next by Date: Re: WebServices InstallService bug in 5.2 on Max OS X 10.4.7
  • Previous by thread: Re: delayed rule evaluation order
  • Next by thread: Re: delayed rule evaluation order