\relax \@writefile{toc}{\contentsline {part}{III\hspace {1em}More on Processing Arbitrarily Large Data}{182}} \newlabel{part:advanced}{{III}{183}} \@writefile{toc}{\contentsline {section}{\numberline {14}More Self-referential Data Definitions}{183}} \@writefile{toc}{\contentsline {subsection}{\numberline {14.1}Structures in Structures}{183}} \newlabel{sec:struct-in-struct}{{14.1}{183}} \@writefile{lof}{\contentsline {figure}{\numberline {35}{\ignorespaces A sample ancestor family tree}}{184}} \newlabel{fig:familyA}{{35}{184}} \@writefile{lof}{\contentsline {figure}{\numberline {36}{\ignorespaces A Scheme representation of the sample family tree}}{186}} \newlabel{fig:familyS}{{36}{186}} \@writefile{lof}{\contentsline {figure}{\numberline {37}{\ignorespaces Two functions for finding a blue-eyed ancestor}}{191}} \newlabel{fig:blue-eyes}{{37}{191}} \newlabel{ex:ftn-or}{{14.1.1}{191}} \newlabel{ex:bep-eval}{{14.1.2}{191}} \newlabel{ex:count-ft}{{14.1.3}{192}} \newlabel{ex:age-ft}{{14.1.4}{192}} \newlabel{ex:ec-ft}{{14.1.5}{192}} \newlabel{ex:proper-bea}{{14.1.6}{192}} \@writefile{toc}{\contentsline {subsection}{\numberline {14.2}Extended Exercise: Binary Search Trees, Part 1}{193}} \newlabel{sec:bst}{{14.2}{193}} \newlabel{ex:bst1}{{14.2.1}{194}} \newlabel{ex:bst1-r}{{14.2.1}{194}} \@writefile{lof}{\contentsline {figure}{\numberline {38}{\ignorespaces A binary search tree and a binary tree}}{194}} \newlabel{fig:bst}{{38}{194}} \newlabel{ex:bst0}{{14.2.2}{195}} \newlabel{ex:bst2}{{14.2.3}{196}} \newlabel{ex:bst3}{{14.2.4}{196}} \newlabel{ex:bst4}{{14.2.5}{197}} \@writefile{toc}{\contentsline {subsection}{\numberline {14.3}Lists in Lists}{198}} \newlabel{sec:docs}{{14.3}{198}} \@writefile{lof}{\contentsline {figure}{\numberline {39}{\ignorespaces The definition of {\it size\/} for Web pages}}{200}} \newlabel{fig:size}{{39}{200}} \newlabel{ex:web1}{{14.3.1}{200}} \newlabel{ex:web2}{{14.3.2}{201}} \newlabel{ex:web3}{{14.3.3}{201}} \newlabel{ex:web4}{{14.3.4}{201}} \@writefile{toc}{\contentsline {subsection}{\numberline {14.4}Extended Exercise: Evaluating Scheme}{201}} \newlabel{sec:interpreter}{{14.4}{201}} \newlabel{ex:scheme-dd}{{14.4.1}{202}} \newlabel{ex:scheme-numeric}{{14.4.2}{203}} \newlabel{ex:scheme-eval}{{14.4.3}{203}} \newlabel{ex:scheme-subst}{{14.4.4}{203}} \@writefile{toc}{\contentsline {section}{\numberline {15}Mutually Referential Data Definitions}{203}} \newlabel{sec:mutual}{{15}{203}} \@writefile{toc}{\contentsline {subsection}{\numberline {15.1}Lists of Structures, Lists in Structures}{203}} \newlabel{sec:mut-ref-dd}{{15.1}{203}} \@writefile{lof}{\contentsline {figure}{\numberline {40}{\ignorespaces A descendant family tree}}{204}} \newlabel{fig:bu-family}{{40}{204}} \@writefile{lof}{\contentsline {figure}{\numberline {41}{\ignorespaces A Scheme representation of the descendant family tree}}{206}} \newlabel{fig:bu-familyS}{{41}{206}} \newlabel{ex:be-desc-eval}{{15.1.1}{209}} \newlabel{ex:desc-distance}{{15.1.2}{209}} \newlabel{ex:desc-count-ft}{{15.1.3}{209}} \newlabel{ex:desc-ec-ft}{{15.1.4}{209}} \@writefile{lof}{\contentsline {figure}{\numberline {42}{\ignorespaces Two programs for finding a blue-eyed descendants}}{210}} \newlabel{fig:blue-eyes-bu}{{42}{210}} \@writefile{toc}{\contentsline {subsection}{\numberline {15.2}Designing Functions for Mutually-Referential Definitions}{211}} \newlabel{sec:mutual:design}{{15.2}{211}} \@writefile{lof}{\contentsline {figure}{\numberline {43}{\ignorespaces Designing programs for definitions with mutual references}}{212}} \newlabel{fig:design6}{{43}{212}} \@writefile{toc}{\contentsline {subsection}{\numberline {15.3}Extended Exercise: More on Web Pages}{214}} \newlabel{sec:more-wp}{{15.3}{214}} \newlabel{ex:wp-count}{{15.3.1}{214}} \newlabel{ex:wp-to-file}{{15.3.2}{214}} \newlabel{ex:wp-occurs}{{15.3.3}{214}} \newlabel{ex:wp-find}{{15.3.4}{214}} \@writefile{toc}{\contentsline {section}{\numberline {16}Development through Iterative Refinement}{215}} \newlabel{sec:files}{{16}{215}} \@writefile{toc}{\contentsline {subsection}{\numberline {16.1}Data Analysis}{216}} \newlabel{sec:files-what}{{16.1}{216}} \@writefile{lof}{\contentsline {figure}{\numberline {44}{\ignorespaces A sample directory tree}}{216}} \newlabel{fig:accountant}{{44}{216}} \newlabel{ex:dir0}{{16.1.1}{217}} \@writefile{toc}{\contentsline {subsection}{\numberline {16.2}Defining Data Classes and Refining Them}{217}} \newlabel{sec:files-models}{{16.2}{217}} \newlabel{ex:file-example1}{{16.2.1}{218}} \newlabel{ex:dir-how-many1}{{16.2.2}{218}} \newlabel{ex:alt-dir1}{{16.2.3}{219}} \newlabel{ex:file-example2}{{16.2.4}{219}} \newlabel{ex:dir-how-many2}{{16.2.5}{219}} \@writefile{toc}{\contentsline {subsection}{\numberline {16.3}Refining Functions and Programs}{220}} \newlabel{ex:file-example3}{{16.3.1}{220}} \newlabel{ex:dir-how-many3}{{16.3.2}{221}} \newlabel{ex:file-du}{{16.3.3}{221}} \newlabel{ex:file-find}{{16.3.4}{221}} \@writefile{toc}{\contentsline {section}{\numberline {17}Processing Two Complex Pieces of Data}{222}} \newlabel{sec:simu}{{17}{222}} \@writefile{toc}{\contentsline {subsection}{\numberline {17.1}Processing Two Lists Simultaneously: Case 1}{222}} \newlabel{sec:two-inputs:case1}{{17.1}{222}} \@writefile{lof}{\contentsline {figure}{\numberline {45}{\ignorespaces The complete definition of {\it replace-eol-with\/}}}{223}} \newlabel{fig:append}{{45}{223}} \newlabel{ex:append}{{17.1.1}{224}} \newlabel{ex:cross}{{17.1.2}{224}} \@writefile{toc}{\contentsline {subsection}{\numberline {17.2}Processing Two Lists Simultaneously: Case 2}{224}} \newlabel{sec:two-inputs:case2}{{17.2}{224}} \@writefile{lof}{\contentsline {figure}{\numberline {46}{\ignorespaces The complete definition of {\it hours\/}$\longrightarrow ${\it wage\/}}}{226}} \newlabel{fig:hours-wage}{{46}{226}} \newlabel{ex:weekly-wage}{{17.2.1}{227}} \newlabel{ex:zip}{{17.2.2}{227}} \@writefile{toc}{\contentsline {subsection}{\numberline {17.3}Processing Two Lists Simultaneously: Case 3}{228}} \newlabel{sec:two-inputs:case3}{{17.3}{228}} \@writefile{lof}{\contentsline {figure}{\numberline {47}{\ignorespaces Data definitions for {\it list-pick\/}}}{228}} \newlabel{fig:list-pick-dd}{{47}{228}} \@writefile{lof}{\contentsline {figure}{\numberline {48}{\ignorespaces The complete definition of {\it list-pick\/}}}{231}} \newlabel{fig:list-pick}{{48}{231}} \newlabel{ex:list-ref}{{17.3.1}{232}} \@writefile{toc}{\contentsline {subsection}{\numberline {17.4}Function Simplification}{232}} \newlabel{sec:two-inputs:simplify}{{17.4}{232}} \@writefile{lof}{\contentsline {figure}{\numberline {49}{\ignorespaces The simplified definition of {\it list-pick\/}}}{234}} \newlabel{fig:list-pick2}{{49}{234}} \newlabel{ex:replace-eol-simp}{{17.4.1}{234}} \newlabel{ex:list-ref-simpl}{{17.4.2}{234}} \@writefile{toc}{\contentsline {subsection}{\numberline {17.5}Designing Functions that Consume Two Complex Inputs}{234}} \newlabel{sec:two-inputs:design}{{17.5}{234}} \@writefile{toc}{\contentsline {subsection}{\numberline {17.6}Exercises on Processing Two Complex Inputs}{236}} \newlabel{sec:two-inputs:ex}{{17.6}{236}} \newlabel{ex:merge}{{17.6.1}{236}} \newlabel{ex:hangman-list}{{17.6.2}{236}} \newlabel{ex:wage-general}{{17.6.3}{237}} \newlabel{ex:polyn}{{17.6.4}{238}} \newlabel{ex:perm-xmas}{{17.6.5}{238}} \newlabel{ex:dna-prefix}{{17.6.6}{239}} \@writefile{toc}{\contentsline {subsection}{\numberline {17.7}Extended Exercise: Evaluating Scheme, Part 2}{240}} \newlabel{sec:interpreter2}{{17.7}{240}} \newlabel{ex:scheme-one-def}{{17.7.1}{240}} \newlabel{ex:scheme-prog-dd}{{17.7.2}{240}} \newlabel{ex:scheme-eval-def1}{{17.7.3}{241}} \newlabel{ex:scheme-eval-def}{{17.7.4}{242}} \@writefile{toc}{\contentsline {subsection}{\numberline {17.8}Equality and Testing}{242}} \newlabel{sec:equal-test}{{17.8}{242}} \newlabel{ex:list=4}{{17.8.1}{246}} \newlabel{ex:list=2}{{17.8.2}{246}} \newlabel{ex:list=1}{{17.8.3}{246}} \newlabel{ex:list=5}{{17.8.4}{246}} \newlabel{ex:list=3}{{17.8.5}{246}} \newlabel{ex:web=1}{{17.8.6}{248}} \newlabel{ex:web=3}{{17.8.7}{248}} \newlabel{ex:web=5}{{17.8.8}{248}} \newlabel{ex:web=2}{{17.8.9}{248}} \@writefile{lof}{\contentsline {figure}{\numberline {50}{\ignorespaces A test function}}{250}} \newlabel{fig:test-function}{{50}{250}} \newlabel{ex:test2}{{17.8.10}{251}} \newlabel{ex:test3}{{17.8.11}{251}} \newlabel{ex:test4}{{17.8.12}{251}} \@setckpt{curriculum2}{ \setcounter{page}{252} \setcounter{equation}{0} \setcounter{enumi}{4} \setcounter{enumii}{3} \setcounter{enumiii}{0} \setcounter{enumiv}{0} \setcounter{footnote}{41} \setcounter{mpfootnote}{0} \setcounter{part}{3} \setcounter{section}{17} \setcounter{subsection}{8} \setcounter{subsubsection}{0} \setcounter{paragraph}{0} \setcounter{subparagraph}{0} \setcounter{figure}{50} \setcounter{table}{0} \setcounter{lpart}{0} \setcounter{lchapter}{0} \setcounter{lsection}{0} \setcounter{lsubsection}{0} \setcounter{lsubsubsection}{0} \setcounter{lparagraph}{0} \setcounter{lsubparagraph}{0} \setcounter{lsubsubparagraph}{0} \setcounter{lequation}{0} \setcounter{foops}{80} \setcounter{exercise}{12} }