(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) ); }