MathGroup Archive 2007

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

Search the Archive

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




  • Prev by Date: Re: Partition a list into sublists of unequal size
  • Next by Date: Re: slot argument weirdness
  • Previous by thread: Re: slot argument weirdness
  • Next by thread: Re: slot argument weirdness