Contents Next: Exercises Up: Programming Techniques Previous: Abstraction

Summary of Rules

1.
When recurring on a list, do three things:
a.
check for the termination condition;
b.
use the first element of the list;
c.
recur with the ``rest'' of the list.

2.
If a function builds a list using ``cons,'' return () at the terminating line.
3.
When recurring on a nested list, do three things:
a.
check for the termination condition;
b.
check if the first element of the list is an atom or a list;
c.
recur with the ``first'' and the ``rest'' of the list.

4.
When evaluating an expression, do three things:
a.
check for the termination condition;
b.
identify operator;
c.
apply operator to recursive calls on the operands.

5.
When building a number value using +, return 0 at the terminating line. When building a number value using *, return 1 at the terminating line.
6.
When recurring on a number, do three things:
a.
check for the termination condition;
b.
use the number in some form;
c.
recur with a changed form of the number.

7.
To ensure proper termination do two things:
a.
make sure that you are changing at least one argument in your recursive call;
b.
make sure that your test for termination looks at the arguments that change in the recursive call.

8.
Two simple cases may occur when changing an argument in a recursive call:
a.
if you are using ``rest'' to change an argument which is a list, use ``null'' in the test for termination;
b.
if you are decreasing an argument which is a number, compare it with 0 in the test for termination.

9.
Use ``let'' to reduce the number of function calls.

10.
Encapsulate program fragments into new functions to improve clarity.

11.
Encapsulate repeated program fragments into new functions to reduce program size.

Contents Next: Exercises Up: Programming Techniques Previous: Abstraction

© Colin Allen & Maneesh Dhagat
March 2007