Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2007
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2007

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

Search the Archive

Re: Slots & Ampersands

  • To: mathgroup at smc.vnet.net
  • Subject: [mg74399] Re: Slots & Ampersands
  • From: Albert <awnl at arcor.net>
  • Date: Mon, 19 Mar 2007 22:09:06 -0500 (EST)
  • References: <etlq8s$rab$1@smc.vnet.net>

Hi,

>  I've always regarded the Slot and Ampersand as being
>  inseparable in Mathematica (the Laurel & Hardy of 
>  Mathematica?), 
 > and was surprised to find one of them absent in
 >
 >    Plot[Sin[x], {x, 0, 2Pi}, ColorOutput ->
 >       (RGBColor[1, 0, 0]&)]
 >
 >  [Help Browser under ColorOutput::colpc ,Examples]
 >
 >   Question 1
 >
 >   Where is Laurel gone? Is he inside ColorOutput or
 >   RGBColor?

Laurel is not there, he is just not that useful...
You should first learn that #& is just a shortcut for Function[Slot[1]], 
which makes clear tha # is a slot for an argument of the function, that 
is the first argument to be precise, which you could also write as #1. 
#2 would be the second argument and so on, ## is a (Slot)Sequence of all 
arguments. Since you can define Functions which don't need arguments or 
at least don't make use of them, the single & just means this: A 
function which doesn't make use of any of the arguments you give it. So 
it can go without the # very well. On the other hand you can define 
expressions with just # (Slot[n] that is) and no & or Function in it, 
e.g. when building a function body automatically. Mathematica will just 
not do anything with the slots in that case, I think.

Example:

f=Print["I am happy to ignore my arguments"]&

(* check that it is indeed a Function and # is a Slot[]: *)
FullForm[f]
FullForm[#]

(* call it with or without arguments: *)
f[]
f[x]
f[1,3,4,{None,101}]

(* define a function body and only later construct a Function from it:*)
a = #1 + 4
ff = Evaluate[a] &
ff[3]

 >   Question 2
 >
 >   Are there other similar constructs in Mathematica? [No # ]

As far as I know, the only construct where the character # (Slot[]) 
makes sense is Function, but I am willing to learn more...

hth,

albert


  • Prev by Date: Re: Possible bug in NSolve[equation, variable, precission]
  • Next by Date: Re: About TableForm
  • Previous by thread: Re: Slots & Ampersands
  • Next by thread: Re: Slots & Ampersands