> : 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