Hi,

「gather」 should work. What version of Perl 6 are you using? (run perl6 -v)

I may be wrong, but I think the code should be:

my \golden    = (1 + sqrt 5) ÷ 2;
my \fib       = 1, 1, * + * ... ∞ ;
my \approx    = gather for fib.rotor(2 => -1) { take .[1] ÷ .[0] };
my \distances = approx.map: (golden - *).abs;
say distances[^1000];

On 2017-03-13 13:28:24 GMT, Marc Chantreux wrote:
> hello,
>
> i saw a math show with my son and we tried to use perl6
>
> * to demonstrate the fact that the ratio between the terms
>   n and n-1 in the fibonnaci sequence gets closer to the golden number
>
> * let him know how awesome is perl6
>
> so i wrote
>
> my \golden    = ( 1 / sqrt 5 ) / 2;
> my \fib       = ( 1, 1, * + * ... * );
> my \approx    = (gather for fib -> $a, $b { take $a / $b });
> my \distances = approx.map(  abs golden - * );
> say [>=] distances[^1000];
>
> and it didn't work: i had to rewrite
>
>       my \distances = approx.map(  abs golden - * );
>
> to
>
>       my \distances = approx.map({ abs golden - $_ });
>
> which is not so appealing.
>
> then my programs starts to burn cpu and gets nothing. this is because it
> seems that gather isn't on demand so i moved the subscript [^1000]. this
> works but isn't intellectually right anymore.
>
> any idea to make it more appealing ?
>
> regards

Reply via email to