(define (sum-integers a b)
(if (> a b)
0
(+ a (sum-integers (+ a 1) b))))
####
(define (sum-cubes a b)
(if (> a b)
0
(+ (cube a) (sum-cubes (+ a 1) b))))
####
(define (sum term a next b)
(if (> a b)
0
(+ (term a)
(sum term (next a) next b))))
####
(define (inc n) (+ n 1))
(define (sum-cubes a b)
(sum cube a inc b))
####
sub sum_integers {
my ($a, $b) = @_;
if ($a > $b) { return(0); }
else { return( $a + &sum_integers(($a + 1), $b) ); }
}
sub cube {
my ($a) = @_;
return( $a * $a * $a );
}
sub sum_cubes {
my ($a, $b) = @_;
if ($a > $b) { return(0); }
else { return( &cube($a) + &sum_cubes(($a + 1), $b) ); }
}
####
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) );
}