```Date: Feb 3, 2011 5:29 AM
Author: DrMajorBob
Subject: Re: Mystifying Scoping of Piecewise Variable?

(BUG ALERT. See the last line of code.)The functionmyFunc[y_] = Piecewise[{{x^2, x < 0}, {x, x >= 0}}]depends only on y on the left, but it depends only on x on the right.That obviously cannot work, but how, exactly, should we expect it to fail?If x has no value, Piecewise has no numeric value:x=.Piecewise[{{x^2,x<0},{x,x>=0}}]\[Piecewise]	x^2	x<0x	x>=00	Trueso the first plot is empty.In the second plot, x is given values across the range from -10 to +10, so  Piecewise also gets numeric values:Table[myFunc[x], {x, -10, 10, 1}]{100, 81, 64, 49, 36, 25, 16, 9, 4, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, \10}hence the second plot is not empty.That doesn't mean your definition of myFunc is suddenly a good one. It's  still completely wrong.But it works when you're passing x to the function AND varying x at the  same time.So this plot is empty (because x still has no value):Plot[myFunc[x], {y, -10, 10}]But this plot is a constant:x = -7;Plot[myFunc[x], {y, -10, 10}]When passing z and varying z, we see what I'd call a bug:z =.Plot[myFunc[z], {z, -10, 10}]It plots the value of myFunc[-7] from the previous plot, even though x is  not involved, and z doesn't have a value.BobbyOn Wed, 02 Feb 2011 05:08:08 -0600, Frank Iannarilli <frankeye@cox.net>  wrote:> Perhaps I'm tired, but this is weird:>> Clear[myFunc]>> myFunc[y_] = Piecewise[{{x^2, x < 0}, {x, x >= 0}}]>    (Same behavior below for either Set(=) or SetDelayed(:=) )>> Plot[myFunc[y], {y, -10, 10}]>   (returns empty plot)>> Plot[myFunc[x], {x, -10, 10}]>   (returns "expected" piecewise function plot)>> What is the scoping of the Piecewise variable, in this case "x"?>> How can one write a Module that creates and returns a Piecewise  > function?   The scope of its argument is unclear to me.>> Thanks>-- DrMajorBob@yahoo.com
```