Re: slot argument weirdness

*To*: mathgroup at smc.vnet.net*Subject*: [mg83937] Re: slot argument weirdness*From*: Albert Retey <awnl at arcor.net>*Date*: Wed, 5 Dec 2007 07:06:27 -0500 (EST)*References*: <fj37b2$hok$1@smc.vnet.net>

Jerry 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 don't make much sense without the enclosing function. This means you should define m with the & to make it a function and then use it like: m = {{#1,#2},{#2,#1}}&; Apply[m,v] note that the definition of m is just a shortcut for : m = Function[{{#1,#2},{#2,#1}}] which can be elaborated even more to: m = Function[{x,y},{{x,y},{y,x}}] I find it often much more readable to work with named arguments for functions than just the slots, but that depends on the use case and is a matter of taste. hth, albert