[Date Index]
[Thread Index]
[Author Index]
Re: RE: Should Pure Functions Require &
*To*: mathgroup at smc.vnet.net
*Subject*: [mg29777] Re: [mg29775] RE: Should Pure Functions Require &
*From*: Andrzej Kozlowski <andrzej at tuins.ac.jp>
*Date*: Sun, 8 Jul 2001 20:35:53 -0400 (EDT)
*Sender*: owner-wri-mathgroup at wolfram.com
I think in order to do what you would like you would have to add to
Mathematica quite a lot of rules for deciding where to insert & in more
complicated cases, e.g.
Select[Range[100],Function[x,x>#]]&/@Range[10];
The point is that even if Mathematica was able to correctly decide where to
insert the & and even if Mathematica programmers could remember all the
rules which you stated in your message (and which, by the way, I can't
understand because I do not understand what you mean when you write
>where test has " "
and so on), implementing your idea would encourage people to write even more
unreadable code than they do at present. I find the idea of trying to
understand such code quite dreadful. Thus I would strongly oppose your idea
on the grounds of wanting to preserve my sanity.
By the way, I there is a reasonable use for # without & ( well, sort of).
Here is a somewhat artificial example.
This makes a list of expressions {#,#^2,...} which can be manipulated just
as any algebraic expressions.
l = Table[#^i, {i, 1, 100}];
This converts them to pure functions:
In[2]:=
v=Function/@l;
For example:
In[3]:=
v[[15]][3]
Out[3]=
14348907
--
Andrzej Kozlowski
Toyama International University
JAPAN
http://platon.c.u-tokyo.ac.jp/andrzej/
http://sigma.tuins.ac.jp/~andrzej/
on 01.7.8 2:00 PM, Ersek, Ted R at ErsekTR at navair.navy.mil wrote:
> Earlier I wrote:
> --------------------
>> I stated wondering if all would work well if pure functions didn't require
>> & at the end. I am thinking it would be great if a future version of
>> Mathematica would make the use of & optional.
>>
>> So for example we could use
>> Select[data, #!=0]
>> instead of
>> Select[data, #!=0&]
>>
>>
>> and we could use
>> #^2 /@expr
>> instead of
>> #^2& /@expr
>>
>> I would want to have pure functions ending with & optional rather than
>> prohibited for backward compatibility. Wouldn't life be better if we
>> didn't have to use &. Is there a reason why my suggestion would not work?
>>
> -----------------
> Orestis Vantzos,
> asked whether Select[data, #!=0]
> should do what Select[data, #!=0&] does now,
> or what Select[data, #!0]& does now.
>
> In that case one clearly wants Select[data, #!=0&]
> since the other case is a pure function that always returns an empty
> list.
>
> ----------------
> The way I would like to see it the kernel would put an & at a
> suitable place in the following situations.
> 1 A head has one or more #, #n, ##, or ##n but no &.
> 2 Use of expr/;test, _?test, __?test, ___?test where test has
> " ".
> 3 The right side of Set, or SetDelayed has " ".
> 4 The second argument of Select, MatrixQ, VectorQ has " ".
> 5 An argument of a functional programming construct includes #, #n,
> ##, or ##n but no & and a function is expected in this argument.
>
> Examples of 5
>
> In[1]:= g = {##+1, ##+2};
> Through[ g[{x,y,z}] ]
>
> This would return the same thing as if we had g = {##+1&, ##+2& }
> since Through expects an argument of the form p[func1, func2][x]
>
>
> In[2]:= g= {##+1, ##+2};
> Apply[ g, {x,y,z} ]
>
> This would return the same thing as if we had g= {##+1, ##+2}&
> since Apply expects the first argument to be a function.
>
>
> In[3]:= Clear[g]; Apply[g, {x,y,z}]
>
> Out[3]= g[x,y,z]
>
> In this case (g) has no #, #n, ##, ##n so an (&) would not be
> assumed.
>
>
> I haven't found a case where the "missing" (&) could go "here" or
> "there" and both decisions would be useful. Also I am not aware of a use for
> #, #n, ##, ##n without an (&).
>
> ------------------
>> Regards,
>> Ted Ersek
>> Download Mathematica tips, tricks from
>> http://www.verbeia.com/mathematica/tips/Tricks.html
>>
>
>
Prev by Date:
**Re: Should Pure Functions Require &**
Next by Date:
**boolean operations for polygons**
Previous by thread:
**Re: Should Pure Functions Require &**
Next by thread:
**Re: RE: Should Pure Functions Require &**
| |