Re: Placing the "&"
- To: mathgroup at smc.vnet.net
- Subject: [mg114797] Re: Placing the "&"
- From: Barrie Stokes <Barrie.Stokes at newcastle.edu.au>
- Date: Fri, 17 Dec 2010 03:30:06 -0500 (EST)
- References: <201012161048.FAA11804@smc.vnet.net>
Hi ziloo Thanks for this question. It gives me a soapbox chance, although treacherous waters are those discussing styles of any kind (de gustibus non disputandum est). I once did some beta testing for a Mathematica application, and had a long dialogue with the author about this, and I think I convinced him then that the foolproof way to write pure functions is the form(...stuff with #...&). That way the bracket matching mechanism Ctrl-Shift-B will always cover the whole pure function unambiguously. Thus, to take your examples, Select[Range[1000], (PrimeQ[2^(#) + 1] &)] and Select[Range[500], (PrimeQ[FromDigits[Table[1, {#}]]] &)]. Now there is something better. I always write such lines as Select[Range[1000], (s \[Function] PrimeQ[2^s + 1])] and Select[Range[500], (s \[Function] PrimeQ[FromDigits[Table[1, {s}]]])]. Again the bounding parentheses, and, I think, easier to read. In this way you can write such as: (s \[Function] s^2) /@ {1, 2, 3, 4, 5} (s \[Function] s^2) /@ {{1, 2}, {3, 4}, {5, 6}, {7, 8}} (s \[Function] Sqrt[ \!\(\*SubscriptBox["s", RowBox[{"\[LeftDoubleBracket]", "2", "\[RightDoubleBracket]"}]]\)]) /@ {{1, 2}, {3, 4}, {5, 6}, {7, 8}} ({s, t} \[Function] s^2 + t)[3, 4] ({s} \[Function] \!\(\*SubscriptBox["s", RowBox[{"\[LeftDoubleBracket]", "1", "\[RightDoubleBracket]"}]]\)^2 + \!\(\*SubscriptBox["s", RowBox[{"\[LeftDoubleBracket]", "2", "\[RightDoubleBracket]"}]]\)) /@ {{1, 2}, {3, 4}, {5, 6}, {7, 8}} Sort[ {{1, 9}, {1, 5}, {1, 3}, {1, 8}}, ({s, t} \[Function] \!\(\*SubscriptBox["s", RowBox[{"\[LeftDoubleBracket]", "2", "\[RightDoubleBracket]"}]]\) < \!\(\*SubscriptBox["t", RowBox[{"\[LeftDoubleBracket]", "2", "\[RightDoubleBracket]"}]]\))] Sort[ {{"b", {1, 2, 3}}, {"a", {7, 8, 9}}}, ({s, t} \[Function] \!\(\*SubscriptBox["s", RowBox[{"\[LeftDoubleBracket]", RowBox[{"2", ",", "1"}], "\[RightDoubleBracket]"}]]\) > \!\(\*SubscriptBox["t", RowBox[{"\[LeftDoubleBracket]", RowBox[{"2", ",", "1"}], "\[RightDoubleBracket]"}]]\))] Split[ {{1, 2}, {1, 4}, {5, 6}, {7, 8}}, ({s, t} \[Function] s[[1]] === t[[1]]) ] HTH. Barrie >>> On 16/12/2010 at 9:48 pm, in message <201012161048.FAA11804 at smc.vnet.net>, ziloo <ziloo_1 at yahoo.com> wrote: > Hello folks...a newbie question here, > > Looking at the following three examples, would you please > explain the criteria for placing the "&" when using an > anonymous function: > > 2^(#) +1 & > > Select[Range[1000],PrimeQ[2^(#)+1]&] > > Select[Range[500], PrimeQ[FromDigits[Table[1, {#}]]] &] > > Why is the "&" getting further away from the function's body? > > > Thank you > > ziloo
- References:
- Placing the "&"
- From: ziloo <ziloo_1@yahoo.com>
- Placing the "&"