Re: a strange line of code
- To: mathgroup at smc.vnet.net
- Subject: [mg52739] Re: a strange line of code
- From: David Bailey <dave at Remove_Thisdbailey.co.uk>
- Date: Sat, 11 Dec 2004 05:21:59 -0500 (EST)
- References: <cpb00k$j28$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Stefan Schuster wrote:
> Hello,
>
> 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]]];
>
> thanks in advance
>
> Stefan
>
Hi,
I think your function got a bit scrambled, but in answer to your
question, the # and & characters together create a pure function. For
example, (#^2+1)& is a pure function that squares its argument and adds
one to it! Although '@' is a Mathematica operator, it does not feature
here. The /@ operator is just another way of doing Map!
A good way to unpick code like this, is to choose a bit (in a notebook)
with the mouse and click repeatedly to extend the selection. This
process takes into account all the precedences of operators, etc. so
that you can extract a sub-expression and paste it somewhere and test it
on its own.
Some people love writing expressions like that - and, to be fair, the
result is usually more efficient - but such code can be frighteningly
opaque - particularly when you come to look at it in 3 months time!
David Bailey