MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: slot argument weirdness


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



  • Prev by Date: Re: Controlling evaluation
  • Next by Date: Re: Re: different eigenvectors
  • Previous by thread: Re: slot argument weirdness
  • Next by thread: Re: slot argument weirdness