       Re: a strange line of code

• To: mathgroup at smc.vnet.net
• Subject: [mg52723] Re: a strange line of code
• From: D Herring <dherring at at.uiuc.dot.edu>
• Date: Sat, 11 Dec 2004 05:21:16 -0500 (EST)
• References: <cpb00k\$j28\$1@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```> in a notebook, I found and function to calculate the Feigenbaum
> bifurcation Diagram.
> I principial understand the Feigenbaum, and I think I'm also able to
> write such an funcion by myself, but not in this compact way.
>
> Can someone please explain me the meaning of the Symbols #, @ and &
>
> Here is the Code:
>
> Feigenbaum = Compile[{{
>      ?, _Real}}, ({?, #} &) /@ Union[Drop[NestList[
>        ? # (1 - #) &, 0.2, 300], 100]]];

In a nutshell,
# - argument for an unnamed function
& - completes the definition of an unnamed function; it takes the
previous token (raw term or bracketed expression) and treats it as a
function which takes an input.
/@ - Map command, infix notation

For a brief intro to the function notation, see section 2.2.4 in the
Mathematical Book, or look up & in the Master Index.

Basically, "f[x_]:=x^2" can be written in a ``pure'' form as "(#^2)&".
"y=f" is then equivalent to "y=(#^2)& /@ 3".

"y=Map[f,x]" is equivalent to "y=f /@ x".  If x was a list, the result
will be of the form y={f[x[]], f[x[]], ...}.

Your example was carefully crafted line of code; it highlights the
expressive power of functional programming, but also shows the potential
for obfuscation.

Later,
Daniel

```

• Prev by Date: Re: Re: finite domains
• Next by Date: Re: a strange line of code
• Previous by thread: Re: a strange line of code
• Next by thread: Re: a strange line of code