Re: Transform list of numbers into pure functions using replace rule
- To: mathgroup at smc.vnet.net
- Subject: [mg89513] Re: Transform list of numbers into pure functions using replace rule
- From: dh <dh at metrohm.ch>
- Date: Wed, 11 Jun 2008 03:20:00 -0400 (EDT)
- References: <g2lb8t$964$1@smc.vnet.net> <g2lnoo$ihb$1@smc.vnet.net>
Hi, you may try this: {1,2,f[x],3&} //. {x1___,x2_?NumericQ,x3___}->{x1,x2&,x3} Daniel Mac wrote: > On Jun 10, 9:42 am, Mac <mwjdavid... at googlemail.com> wrote: >> Hello, >> >> I'm developed a program to invert satellite observations into >> geophysical variables such as forest biomass. One of the input >> parameters are the errors in the observation channels which can be >> either constant or a function. To be consistent the program expects >> all errors to be functions but they can also be constant functions >> e.g. if the error is 4 then the input parameter is "4&". >> >> I've however hit a problem with the replacement rule that allows me to >> transform all input errors into a function. The following works as >> expected in that constants in the list are transformed into virtual >> functions and functions in the list are left alone. >> >> In[40]:= If[NumberQ[#], ToExpression[ToString[#] <> "&"], #] & /@ {1, >> 2, 3 &, f[x]} >> >> Out[40]= {1 &, 2 &, 3 &, f[x]} >> >> However, I cannot find a replacement rule to do the same job. Here is >> one try: >> >> In[39]:= {1, 2, f[x]} /. x_ /; NumberQ -> Hold[x &] >> >> Out[39]= {1, 2, f[x]} >> >> Any help would be appreciated. >> >> Mac > > Hello, > > Many thanks for your very quick reply. Your solution doesn't quite > work because I would also like to transform lists of this type (it was > in the first example I gave): > > In[3]:= {1, 2, f[x], 3 &} /. x_ /; NumberQ[x] -> (x &) > > Out[3]= {1 &, 2 &, f[x], 3 & &} > > The problem is the "3&&" which I would like to be "3&". > > Any magic that you can propose ? > > many thanks in any case > > Mac > -- Daniel Huber Metrohm Ltd. Oberdorfstr. 68 CH-9100 Herisau Tel. +41 71 353 8585, Fax +41 71 353 8907 E-Mail:<mailto:dh at metrohm.com> Internet:<http://www.metrohm.com>