Re: slot argument weirdness

*To*: mathgroup at smc.vnet.net*Subject*: [mg83941] Re: slot argument weirdness*From*: Jon McLoone <jonm at wolfram.co.uk>*Date*: Wed, 5 Dec 2007 07:08:33 -0500 (EST)*References*: <fj37b2$hok$1@smc.vnet.net>

On Dec 4, 9:40 am, Jerry <JLK2... at yahoo.com> wrote: > I have to produce some bulky matrices which are described by > two parameters and it seems the easiest way to produce them > is as follows (I took out all the complexity and just left > in the slots to illustrate my problem). v is the parameter > array. > > v = {2, 5}; > myMatrix=Apply[{{#1, #2}, {#2, #1}} &, v] > > giving {{2, 5}, {5, 2}} and all is well. > > But since the actual form in the first argument in Apply is > really a large messy thing, I thought I'd produce it just > once in the notebook and represent it with: > > m = {{#1, #2}, {#2, #1}}; > > But geez, this doesn't work at all: > > MyMatrix2= Apply[m &, v] > > gives {{#1, #2}, {#2, #1}} > > I've tried a lot of things to make this work but have failed > completely. If someone can tell me that there is absolutely > no representation of the slot configuration that will do > what I want, then I can quit trying. Or is there? Thanks for > any info. The Slots (#) are usually part of the Function (&) so the natural way to do this would be... v = {2, 5}; m = {{#1, #2}, {#2, #1}} &; Apply[m, v] But if you want to pass the slot expression around separately from the Function then you need to take notice of the HoldAll attribute of Function and do the following... m = {{#1, #2}, {#2, #1}}; Apply[Evaluate[m] &, v] Jon McLoone http://members.wolfram.com/jonm