"Re: don't understand #"
- To: mathgroup at smc.vnet.net
- Subject: [mg28865] "Re: don't understand #"
- From: wouter.meeussen at vandemoortele.com (Wouter Meeussen)
- Date: Wed, 16 May 2001 03:28:12 -0400 (EDT)
- References: <9dqd40$4ii@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
if you want an anonymous function that can be applied to a list of lists, *without specifying the arguments immediately*, the you can make use of : g=Flatten[Outer[f[x,#1,#2]&,#1,#2]]& In[1]:= g @@ {{1,2,3},{a,b,c}} Out[1]= {f[x, 1, a], f[x, 1, b], f[x, 1, c], f[x, 2, a], f[x, 2, b], f[x, 2, c], f[x, 3, a], f[x, 3, b], f[x, 3, c]} For a better understanding, do a 'Trace' like: Trace[ g@@ {{1,2,3},{a,b,c,d}} ]//ColumnForm It is indeed not immediately evident that the first and second calls on # are treated differently : first the two lists are substituted, then the internal function f[x,#1,#2]& is passed to Outer with its #'s still intact. ... (Flatten[Outer[f[x, #1, #2] &, #1, #2]] &)[{1,2,3}, {a,b,c,d}]), Flatten[Outer[f[x, #1, #2] &, {1, 2, 3}, {a, b, c, d}]], {{(f[x,#1,#2]&)[1,a],(f[x,#1,#2]&)[1,b], ... ... enjoy, Wouter.