Re: Re: When is a List not a List?
- To: mathgroup at smc.vnet.net
- Subject: [mg90968] Re: [mg90956] Re: [mg90947] When is a List not a List?
- From: DrMajorBob <drmajorbob at att.net>
- Date: Fri, 1 Aug 2008 02:59:38 -0400 (EDT)
- References: <200807310656.CAA07700@smc.vnet.net>
- Reply-to: drmajorbob at longhorns.com
No argument here. That's the behavior, and we've seen it a thousand times. A "quirk" is only a quirk the first 100 times we see it, or thereabouts. (Pick a number.) Plot COULD assign colors after evaluation, OTOH... the fact that it doesn't is a design choice/artifact, not a necessity preordained by fate. That being so, users are entitled to find it odd at first glance. (Or even second... maybe third.) Bobby On Thu, 31 Jul 2008 13:56:56 -0500, Andrzej Kozlowski <akoz at mimuw.edu.pl> wrote: > When I wrote "Plot does not evaluate its arguments" I meant it in the > usual (although inaccurate) sense that people frequently use in this > context, namely: that the so called Evaluator does not pre-evaluate the > arguments of Plot (if you do not like to thing of "the Evaluator", > another way of saying this is that "Mathematica" does not evaluate the > arguments before Plot is applied and leaves any evaluating to Plot.) Of > course, you are right that Plot does evaluate its arguments in some way > (this sort of behavior is also referred in the often used phrase: "Plot > evaluates its arguments in a non-standard way"). The fact that this > "non-standard" evaluation results in a plot of a function is actually > new in version 6; in all previous versions all you will get is an error > message about the values of the function being plotted not being numeric. > Anyway, my point was that this has been a normal (non quirky) behavior > of Mathematica since version 1 and has been discussed here a number of > times. (It must be at least the fourth of fifth time in 10 years that I > am addressing this issue on this forum). It is also fully documented > (with examples) in the Mathematica online documentation, all past > printed documentation and a vast number of books dealing with > Mathematica. > > Andrzej Kozlowski > > > On 31 Jul 2008, at 20:15, DrMajorBob wrote: > >> But Plot DOES evaluate its arguments, of course, and DOES (eventually) >> see that multiple functions are being plotted. (Else they couldn't be >> plotted.) >> >> It's just not happening before colors are assigned. >> >> Nonetheless, it's prudent to take note of what functions actually do, >> and get used to it. Calling everything in sight a quirk serves no >> purpose. >> >> (Paraphrasing Andrzej, perhaps.) >> >> Bobby >> >> On Thu, 31 Jul 2008 05:04:10 -0500, Andrzej Kozlowski <akoz at mimuw.edu.pl >> > wrote: >> >>> There is nothing at all quirky about this. Yes, FullForm[Table[g[x, >>> n], {n, 1, 2}]] and FullForm[{g[x, 1], g[x, 2]}] are indeed identical, >>> but that is because FullForm evaluates its argument. But Plot has >>> attribute: >>> >>> In[2]:= Attributes[Plot] >>> Out[2]= {HoldAll, Protected} >>> >>> so, unlike FullForm, it does not evaluate its argument. In your first >>> example, Plot[{g[x, 1], g[x, 2]}, {x, 0, 1}, PlotStyle -> {Red, >>> Blue}], the first argument of Plot has an explicit List bracket, so >>> Plot can see that it supposed to treat the argument as two different >>> functions, without evaluating the argument. But in the second case, it >>> does not see an explicit bracket, so it treats the entire expression >>> as the graph of a single function (in versions of Mathematica before 6 >>> you would not have got any plot at all in this case). >>> >>> If you use Evaluate in the second code you will get the same result as >>> you get form the first: >>> >>> Plot[Evaluate[Table[g[x, n], {n, 1, 2}]], {x, 0, 1}, PlotStyle -> >>> {Red, Blue}] >>> >>> Finally, since you have given ample proof that, in spite of many years >>> of using Mathematica, you have not mastered its basics (this >>> particular issue has been raised and answered a countless number of >>> times on this forum), why do you keep assuming that the problems that >>> you keep coming across are Mathematica's "quirks" rather than (as is >>> much more likely) gaps in your won understanding? What do you think of >>> first year undergraduate students who whenever they do not understand >>> something in their introductory lectures claim that it is wrong, or >>> blame their textbook or their lecture rather then themselves? >>> >>> Andrzej Kozlowski >>> >>> >>> >>> On 31 Jul 2008, at 08:56, AES wrote: >>> >>>> g[x_, n_] := x^n >>>> FullForm[Table[g[x, n], {n, 1, 2}]] >>>> FullForm[{g[x, 1], g[x, 2]}] >>>> Plot[{g[x, 1], g[x, 2]}, {x, 0, 1}, PlotStyle -> {Red, Blue}] >>>> Plot[Table[g[x, n], {n, 1, 2}], {x, 0, 1}, PlotStyle -> {Red, Blue}] >>>> >>>> The FullForm[]s are identical. One Plot[] has red and blue curves; >>>> the >>>> other has two blue curves. >>>> >>>> Quirky! >>>> >>> >>> >>> >> >> >> >> --DrMajorBob at longhorns.com > > -- DrMajorBob at longhorns.com
- Follow-Ups:
- Re: Re: Re: When is a List not a List?
- From: Andrzej Kozlowski <akoz@mimuw.edu.pl>
- Re: Re: Re: When is a List not a List?