Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2009

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

Search the Archive

Re: HoldForm in defined function doesn't seem to work

  • To: mathgroup at smc.vnet.net
  • Subject: [mg99242] Re: HoldForm in defined function doesn't seem to work
  • From: dh <dh at metrohm.com>
  • Date: Thu, 30 Apr 2009 06:26:18 -0400 (EDT)
  • References: <gt9aki$q22$1@smc.vnet.net>


Hi joel,

by default, function arguments are evaluated before beeing fed the the 

function. Therefore, f already gets the evaluated result.

To change this you must e,g, give f the attribute: HoldAll or HoldFirst.:

===================

SetAttributes[f, HoldAll];

f[x_] = HoldForm[x];

HoldForm[123 456 789]

f[123 456 789]

====================

Daniel





joel.aufgang at gmail.com wrote:

> I'm struggling to understand why this doesn't work:

> 

> 

> f[x_] = HoldForm[x];

> HoldForm[123 456 789] (* returns "123 x 456 x 789" *)

> f[123 456 789] (* returns"44253432" *)

> 

> I don't understand why the two results are different.   Is there a

> special trick I need to do to be able to define f so that the HoldForm

> works?

> 

> I'm using this to help visualize the way a notebook represents typed

> expressions, so I'm trying to do something like this:

> 

> BoxTree[expr_] := TreeForm[ToBoxes[HoldForm[expr]][[1]]];

> a b c d e // BoxTree

> 123 456 789 // BoxTree (* want this to show as a RowBox like the

> previous example *)

> 

> 

> Any help would be greatly appreciated.  Thanks.

> 




  • Prev by Date: Re: HoldForm in defined function doesn't seem to work
  • Next by Date: Re: How to select several cells
  • Previous by thread: Re: HoldForm in defined function doesn't seem to work
  • Next by thread: Re: HoldForm in defined function doesn't seem to work