in reply to Re: Fibonacci golf with one state variable
in thread Fibonacci golf with one state variable

Sure, of course...

I'm wondering, though, why the goto&f? It works perfectly well as:

perl -E 'sub f{say$_[0];f($_[1],$_[0]+$_[1])}f(1,1)' |head -10

If you want to use the & form that saves on stack operations by not creating a new @_, you could do this (paying careful attention to the right to left execution):

perl -E 'sub f{say$_[0];$_[1]=$_[1]+shift;&f}f(1,1)' |head -10

Which is exactly the same length, but less operations. Now if only Perl auto-optimised tail recursion...

It's a shame that unshift doesn't default to @_ like shift otherwise I could save one character by switching the order of the values on the stack:

perl -E 'sub f{say$_[1];unshift@_,$_[0]+pop;&f}f(1,1)' |head -10

Update: I just read the perldoc for goto and I have to say I didn't know that goto &NAME form, so thanks for the learning exercise!. Like my form it won't result in recursive stack blowout. Without studying the internals too carefully I don't know which would result in less operations. Maybe a benchmark will show.