in reply to Syntactic sugar for tail call optimizations
It uses the Clojure - special_forms 'recur' to replace 'redo'.#!/usr/bin/perl use strict; use warnings; use Sub::Call::Recur qw(:all); use Memoize; memoize('sum'); sub sum { my ( $n, $sum ) = @_; if ( $n == 0 ) { return $sum; } else { recur ( $n - 1, $sum + 1); } } foreach my $sum ( \&sum ) { print $sum->(0, 0), "\n", $sum->(0, 1), "\n", $sum->(1, 0), "\n", $sum->(1, 1), "\n", $sum->(2, 2), "\n", $sum->(10, 1), "\n", $sum->(1000, 1), "\n"; }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Syntactic sugar for tail call optimizations
by LanX (Saint) on May 27, 2011 at 15:24 UTC |