107 F '08
The Recipes
The Style
The Universe
The World
Set 1
Set 2
Set 3
Set 4
Set 5
Set 6
Set 7
Set 8
Set 9
Set 10
Set 11

The Recipes


Design Recipe for Structural Data

  1. What kinds of data are involved? Create data definitions. If they look complex, construct examples according to the data definitions, just to make sure they work.
  2. What kinds of data does the function consume? Which kind does it produce? And what is its purpose? (in one line)
  3. Can you make up examples of inputs? What should the function produce for these inputs?
  4. Let's construct the template:
    1. Does the data definition (of the main argument) mention clauses? If so, use a cond with as many cases as there are clauses in the data definition.
    2. How can you distinguish these kinds of data with conditions involving the main parameter?
    3. Are structs involved? If so, write down all the selector expressions. (Do so on a per-clause basis.)
    4. Does the data definition involve any self-references (or cross-references)? If so, use recursion in the template to express these "arrows".

  5. Let's code:
    1. Can you deal with the simple cond cases? Your examples should cover those cases directly.
    2. What do the expressions in the recursive cases compute? Use the purpose statement of the function to figure out what the recursive function application computes.
    3. How can you combine the results of these expressions so that the function returns the desired value? Use the examples to tabulate the values of the intermediate expressions and the desired output for the given input. This will usually suggest an expression for combining the intermediate results, though admittedly this is the one and only "deep" step of design and you won't get away without some real thinking here.
  6. Did you turn the examples into tests? You may want to do this as you develop functional examples.

last updated on Tue Jun 9 22:21:18 EDT 2009generated with PLT Scheme