Search All of the Math Forum:
Views expressed in these public forums are not endorsed by
NCTM or The Math Forum.



Re: Do we need a When function?
Posted:
Apr 13, 2014 5:26 AM


On 11/04/2014 07:09, Szabolcs Horvát wrote: > On 201438, 2:42 , David Bailey wrote:
> > > Putting aside the question whether this should be a part of the core > language, I got quite convinced that this is a pretty useful function. > I am saying this one month after David's original post, so this opinion > is based on some practical experience. During this month I found myself > remembering and using this function on a number of occasions. (Not very > often, but it does keep coming back.) > > Admittedly, in all cases I used it with NumericQ, so I might as well > have hardcoded NumericQ into it ... > > SetAttributes[whenNumeric, HoldRest] > whenNumeric[x_?NumericQ, val_] := val > > My point is that it seems that this is going to stay in my personal > toolbox permanently, it is indeed a useful function. > > > To show an example, most recently I used it while experimenting with > this piecewise function: > > http://mathematica.stackexchange.com/q/45763/12 > > NIntegrate[when[NumericQ[x], First@test[x]], {x, 2, 2}] > > test[] is a function that returns a vector here. Its implementation > details are irrelevant for my argument. > > Using When here was much easier than defining a separate function only > to allow NIntegrate to be used on the first component of the vector. > > This When[] function doesn't allow me to do anything I couldn't do > without it. I wouldn't miss it at all when writing a package. But it > is very useful for quickanddirty or "improvisational" programming, > i.e. what I do 90% of the time when I use Mathematica interactively. It > saves me time and effort. > > Szabolcs > > P.S. One thing that bothers me slightly is that I do not yet see clearly > whether Condition caching might interact badly with this function. > > > > Thanks for your comments  you seem to be the only person to understand what this function was designed to do!
I did think about simply writing a whenNumeric function, but I felt sure there would be occasional other interesting applications. For example:
when[StringQ[x],.....]
I also felt When would be obviously analogous to If.
Since When can be constructed out of Mathematica code, I reckon caching will not be a problem  at least not in typical cases.
David Bailey http://www.dbaileyconsultancy.co.uk



