sub sum { my ($term, $a, $next, $b) = @_; if ($a > $b) { return(0); } else { return( $term($a) + &sum( $term, ($next($a)), ($next($b)) ) ); } } sub inc { my ($n) = @_; return( $n + 1 ); } sub sum_cubes2 { my ($a, $b) = @_; return( &sum(&cube, $a, &inc, $b) ); }