Mutually Referential Data Definitions

In the preceding section, we developed simple data representations of family trees, Web pages, and Scheme expressions. Developing functions for the corresponding data definitions was based on one and the same design recipe. If we wish to develop more realistic representations of Web pages or Scheme expressions, or if we wish to study descendant family trees rather than ancestor trees, we must learn to describe classes of data that are interrelated. That is, we must formulate several data definitions at once where the data definitions not only refer to themselves, but they also refer to other data definitions.