Re: Re: What is the purpose of the Defer Command?
- To: mathgroup at smc.vnet.net
- Subject: [mg82196] Re: [mg82122] Re: What is the purpose of the Defer Command?
- From: DrMajorBob <drmajorbob at bigfoot.com>
- Date: Sun, 14 Oct 2007 06:17:04 -0400 (EDT)
- References: <fe4uhp$155$1@smc.vnet.net> <fefhui$j6c$1@smc.vnet.net> <1721082.1192176923906.JavaMail.root@m35> <op.tz3l3cbhqu6oor@monster.gateway.2wire.net> <7189487.1192239221818.JavaMail.root@m35>
- Reply-to: drmajorbob at bigfoot.com
> That is, I can integrate one of the output cells in your Defer example by > adding "Evaluatable" to its properties. That has nothing to do with Defer; you're talking about CellPrint, and I see no advantage to CellPrint over Print. Evaluate the Help example, and now you'll see not five integrals, but 10, and they won't even be in a sensible order (1, 1, 2, 3, 4, 5, 2, 3, 4, 5 at my machine). Evaluate it again and you have 15 output cells, and again they're in no useful order. Using Print, you have 5 outputs no matter how many times you evaluate it, and they're in the proper order. And... changing the properties of a cell is more transparent for newbies than using First to remove Defer or ReleaseHold to remove HoldForm, or simply copy/paste from an earlier line? I don't think so. I also see no reason to involve copy/paste in the use of Defer... no more so than any other wrapper, anyway. First or Defer->Identity removes the wrapper. Use Defer the first time the expression is formed (and save it), and no copy/paste will be required. I'm not sure Defer does anything HoldForm doesn't do... but I can type it faster, and I can type First faster than I can type ReleaseHold. Bobby On Fri, 12 Oct 2007 15:48:43 -0500, Vincent N. Virgilio <virgilio at ieee.org> wrote: > Nice. > > However, I'll hazard more opinion. > > Your first example with HoldForm always requires ReleaseHold to integrate > any of the expressions in the output cells. Your second example with > Defer > can be integrated differently, perhaps in a way more appropriate for a > tutorial or help page, e.g. ". . . Perform the computation yourself > before > evaluating the following cells . . .". > > That is, I can integrate one of the output cells in your Defer example by > adding "Evaluatable" to its properties. I cannot do so with your HoldForm > example, which requires ReleaseHold. Both the Evaluatable property and > ReleaseHold can be programmed into document/cell creation, but I think > the > Evaluatable property is more transparent. Someone new to Mathematica > learning about, say, integrals, would probably be distracted by postfix > ReleaseHolds. Moreover, those ReleaseHolds make document creation more > complex (though, since this is software, anything is possible). > > Vince Virgilio > > > On 10/12/07, DrMajorBob <drmajorbob at bigfoot.com> wrote: >> >> How about this? >> >> Function[{n}, >> Print[save[n] = HoldForm[Integrate[x^n Exp[-x], {x, 0, 1}]]]] /@ >> Range[5]; >> >> That gives the same outputs as the Defer example and it allows, for >> instance, >> >> save[3] // ReleaseHold >> >> 6 - 16/\[ExponentialE] >> >> We can use Defer almost the same way, however: >> >> Function[{n}, >> Print[save[n] = Defer[Integrate[x^n Exp[-x], {x, 0, 1}]]]] /@ >> Range[5]; >> >> First@save[3] >> >> 6 - 16/\[ExponentialE] >> >> Bobby >> >> On Fri, 12 Oct 2007 02:04:49 -0500, Vince Virgilio <blueschi at gmail.com> >> wrote: >> >> > On Oct 9, 5:34 am, "David Park" <djmp... at comcast.net> wrote: >> >> Still, my question is: "What is the purpose of the Defer Command?" >> >> >> >> The only potential purpose that I can see is for didactic purposes, >> to >> >> show >> >> preliminary expressions before they are automatically evaluated. But >> the >> >> only way to get Defer to evaluate is by copying and pasting and then >> >> evaluating, by using Shift-Ctrl-L and then evaluating, or by >> >> evaluating in >> >> place. All of these operations leave no record of the steps taken. >> That >> >> goes >> >> contrary to any didactic purpose. >> >> >> >> -- >> >> David Park >> >> djmp... at comcast.nethttp://home.comcast.net/~djmpark/ >> > >> > Have you noticed the example in the documentation (http:// >> > reference.wolfram.com/mathematica/ref/Defer.html) that uses Defer to >> > create cells with unevaluated contents? That has didactic potential. >> > >> > Can that example be rewritten without Defer, with similar complexity? >> > >> > Vince Virgilio >> > >> > >> > >> >> >> >> -- >> DrMajorBob at bigfoot.com >> -- DrMajorBob at bigfoot.com