> : Piers Cawley writes:
> :
> : So, here I am working on a Scheme interpreter in Perl 6, and I'm
> : trying to write it in a (for want of a better description)
> : 'Scheme-like' fashion with lots of recursion. 
> : 
> : The trouble is, unless Perl6 is going to be guaranteed to do
> : optimization of tail calls, this is going to lead to horribly slow
> : code. So, do I bite the bullet and recast some of the functions in an
> : iterative vein, or do I trust that Perl6 will do tail call optimization?
> : 
> : Larry?
>
> Larry Wall responds: 
>
> Why not?  The only casualty is caller()'s semantics, and I think we
> can live with that, or disable the optimization on routines that use
> caller().

Carp.pm is implemented with caller(), does that mean:

sub forever {
    my $depth = shift;

    croak "I got bored"
        if $depth == 1000;

    forever($depth + 1);
}

will have its optimizations disabled?  Or is that fair game; considering you have to 
play a little
more intimately with Carp to croak from the right place?

Mental note:

1. Don't use recursion in Perl, it'll be much slower than an iterative approach
2. If in doubt, refer to note 1.

Jonathan Paton

__________________________________________________
Do You Yahoo!?
Everything you'll ever need on one web page
from News and Sport to Email and Music Charts
http://uk.my.yahoo.com

Reply via email to