diff --git a/README.md b/README.md index dd1e7406..f439f5c1 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ -SICP -==== +# SICP Par dreaming and smiling @@ -10,16 +9,22 @@ This is a PDF version of "Structure and Interpretation of Computer Programs" by Biggest change in this revision (2.andresraba5) is the conversion to LaTeX, which opens the door to design and customization possibilities that the massive CTAN archive enables. Also, the latest typesetting engine XeTeX can be used, along with the Unicode and OpenType goodness it brings. +## Dependencies -Source ------- +To properly build this book, you need these fonts: + +- **Inconsolata**: [ttf-inconsolata](https://archlinux.org/packages/community/any/ttf-inconsolata/) +- **Libertinus**: [libertinus-font](https://archlinux.org/packages/community/any/libertinus-font/) +- **Alegreya**: + +## Source *For macOS Users:* The Inconsolata LGC and Linux Libertine fonts are not included in MacTex. You need to install them separately. Download the Inconsolata LGC fonts [here](https://github.com/MihailJP/Inconsolata-LGC/downloads) and the Linux Libertine fonts [here](http://sourceforge.net/projects/linuxlibertine/files/linuxlibertine/5.3.0/LinLibertineOTF_5.3.0_2012_07_02.tgz/download). To install the fonts system-wide, move all the downloaded `.otf` files into the `/Library/Fonts` folder. After completing these tasks, continue with the instructions below. The `src` directory contains both Texinfo and LaTeX sources. To recompile the book, go there and enter: ```bash -$ make +$ make -j4 ``` The file `preamble.tex` contains all the configuration and style declarations. Note that the LaTeX file `sicp.tex` will be generated on the fly, overwriting the previous version. To keep `sicp.texi` and `sicp.tex` in sync, I make changes to `sicp.texi,` which is already a hybrid of Texinfo and LaTeX code. This is fine, because all non-Texinfo content remains unchanged by the script. @@ -42,8 +47,7 @@ To remove all the generated PDFs and auxiliary files in the whole `src` tree: $ make clean-all ``` -Acknowledgements ----------------- +## Acknowledgements * Lytha Ayth * Neil Van Dyke @@ -56,19 +60,16 @@ Acknowledgements * Brian Wignall * dine2014 -License -------- +## License -The files `sicp.texi, sicp.pdf,` and diagrams in directory `src/fig` are licensed under Creative Commons Attribution-ShareAlike 4.0 International License ([cc by-sa](http://creativecommons.org/licenses/by-sa/4.0/)). +The files `sicp.texi, sicp.pdf,` and diagrams in directory `src/fig` are licensed under Creative Commons Attribution-ShareAlike 4.0 International License ([cc by-sa](https://creativecommons.org/licenses/by-sa/4.0/)). The script files `ex-fig-ref.pl, survey.rb,` and `texi-to-latex.pl` are licensed under GNU General Public License version 3 (for details, see src/LICENSE). -Sister project --------------- +## Sister project A new [HTML5 version](https://github.com/sarabander/sicp) is out, bringing the advantages of adjustable font size and reflowable text to mobile reading. -Translation ------------ +## Translation There is a new [Japanese translation](https://github.com/minghai/sicp-pdf/) of the PDF by Narumi Katoh. Great to see new languages joining the collection! diff --git a/sicp.pdf b/sicp.pdf index bed32bab..5889bf79 100644 Binary files a/sicp.pdf and b/sicp.pdf differ diff --git a/src/.gitignore b/src/.gitignore index 06d2963d..af9423a8 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -1,5 +1,6 @@ *.aux *.cp* +*.fls *.fn *.ky *.log diff --git a/src/Makefile b/src/Makefile index 5994e337..e849aa53 100644 --- a/src/Makefile +++ b/src/Makefile @@ -18,7 +18,7 @@ exercises.tex figures.tex: ex-fig-ref.pl ./ex-fig-ref.pl -f > figures.tex %.pdf: %.svg - inkscape -f ${DIR}/$< -C -A ${DIR}/$@ + inkscape ${DIR}/$< --export-filename ${DIR}/$@ clean: latexmk -CA diff --git a/src/coverpage.svg b/src/coverpage.svg index 01a1d815..f4610ac9 100644 --- a/src/coverpage.svg +++ b/src/coverpage.svg @@ -2,21 +2,21 @@ + width="640" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + width="600px" + inkscape:pagecheckerboard="0"> + id="tspan3060" + x="397.85715" + y="278" + style="font-size:13px;line-height:1.25">  + id="tspan3083" + x="880.85303" + y="248.92879" + style="font-size:13px;line-height:1.25">  Structure andStructure andInterpretationof Computer of ComputerPrograms + id="tspan4899">Programs Harold Abelson and Gerald Jay Sussmanwith Julie Sussman foreword by Alan J. Perlis Unofficial Texinfo Format 2.andresraba5.6 second edition 15 + style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Inconsolata;-inkscape-font-specification:Inconsolata">15 26 + style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Inconsolata;-inkscape-font-specification:Inconsolata">26 24 + style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Inconsolata;-inkscape-font-specification:Inconsolata">24 2 + style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Inconsolata;-inkscape-font-specification:Inconsolata">2 390 + style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Inconsolata;-inkscape-font-specification:Inconsolata">390 7 + style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Inconsolata;-inkscape-font-specification:Inconsolata">7 5 + style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Inconsolata;-inkscape-font-specification:Inconsolata">5 3 + style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Inconsolata;-inkscape-font-specification:Inconsolata">3 6 + style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Inconsolata;-inkscape-font-specification:Inconsolata">6 4 + style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Inconsolata;-inkscape-font-specification:Inconsolata">4 + + style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Inconsolata;-inkscape-font-specification:Inconsolata">+ * * + + style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Inconsolata;-inkscape-font-specification:Inconsolata">+ diff --git a/src/fig/chap1/Fig1.2.svg b/src/fig/chap1/Fig1.2.svg index c2bb4776..2703d7f9 100644 --- a/src/fig/chap1/Fig1.2.svg +++ b/src/fig/chap1/Fig1.2.svg @@ -54,7 +54,7 @@ transform="translate(-85.714287,-78.755322)"> (factorial 6)(factorial 6)(* 6 (factorial 5))(* 6 (* 5 (factorial 4)))(* 6 (* 5 (* 4 (factorial 3))))(* 6 (* 5 (* 4 (* 3 (factorial 2)))))(* 6 (* 5 (* 4 (* 3 (* 2 (factorial 1))))))(* 6 (* 5 (* 4 (* 3 (* 2 1)))))(* 6 (* 5 (* 4 (* 3 2))))(* 6 (* 5 (* 4 6)))(* 6 (* 5 24))(* 6 120)720 + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;font-family:Inconsolata;-inkscape-font-specification:Inconsolata">720 (factorial 6)(factorial 6)(fact-iter 1 1 6)(fact-iter 1 2 6)(fact-iter 1 2 6)(fact-iter 2 3 6)(fact-iter 2 3 6)(fact-iter 6 4 6)(fact-iter 6 4 6)(fact-iter 24 5 6)(fact-iter 24 5 6)(fact-iter 120 6 6)(fact-iter 120 6 6)(fact-iter 720 7 6)(fact-iter 720 7 6)720 + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;font-family:Inconsolata;-inkscape-font-specification:Inconsolata">720 + style="display:inline" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + inkscape:window-y="70" + inkscape:window-maximized="1" + inkscape:pagecheckerboard="0"> + originx="843.49721" + originy="-791.3839" + spacingx="1" + spacingy="1" /> @@ -310,94 +313,147 @@ transform="translate(843.49721,-41.743855)"> fib5fib 5 + fib4 fib3fib 4 + fib 2 + fib 2 + fib3 fib2 fib2 fib1fib 1 + fib 2 + 1fib 1 + fib2 fib1 fib1 fib0 fib1 fib0fib 1 + fib 0 + 1 1 0 1 0fib 1 + fib1 fib0fib 0 + fib 3 + 1 0 + id="tspan24252-6-56-9" + x="-561.28668" + y="90.087479" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:Inconsolata;-inkscape-font-specification:'Inconsolata, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">fib 3 @@ -496,74 +552,184 @@ style="display:inline" transform="translate(843.49721,-41.743855)"> + fib 1 + fib 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 diff --git a/src/fig/chap2/Fig2.13a.svg b/src/fig/chap2/Fig2.13a.svg index 9cc841b9..18049a35 100644 --- a/src/fig/chap2/Fig2.13a.svg +++ b/src/fig/chap2/Fig2.13a.svg @@ -168,7 +168,7 @@ transform="translate(201.26575,-51.096431)"> right-split identity right-split right-split n right-split corner-split split n--1 split right-split identity n--1 n--1 n--1 n--1 corner-split n n--1 n--1 diff --git a/src/fig/chap2/Fig2.14b.svg b/src/fig/chap2/Fig2.14b.svg index 9b063aa2..f09a9234 100644 --- a/src/fig/chap2/Fig2.14b.svg +++ b/src/fig/chap2/Fig2.14b.svg @@ -1,71 +1,17 @@ - - - - - - - + + + + + + + - - - - - + + + + + - - (right-split wave 4) - (right-split rogers 4) - (corner-split wave 4) - (corner-split rogers 4) + + (right-split wave 5) + (right-split rogers 5) + (corner-split wave 5) + (corner-split rogers 5) diff --git a/src/fig/chap2/Fig2.15a.svg b/src/fig/chap2/Fig2.15a.svg index 141793dd..96cbb327 100644 --- a/src/fig/chap2/Fig2.15a.svg +++ b/src/fig/chap2/Fig2.15a.svg @@ -277,7 +277,7 @@ transform="translate(-61.247,-55.936986)"> frameframeedge1edge1vector + style="font-size:13px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Libertinus Sans;-inkscape-font-specification:Libertinus Sans">vector frameframeedge2edge2vector + style="font-size:13px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Libertinus Sans;-inkscape-font-specification:Libertinus Sans">vector frameframeoriginoriginvector + style="font-size:13px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Libertinus Sans;-inkscape-font-specification:Libertinus Sans">vector (0, 0) point on (0, 0) point on display screen + style="font-size:13px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Libertinus Sans;-inkscape-font-specification:Libertinus Sans">display screen diff --git a/src/fig/chap2/Fig2.16b.svg b/src/fig/chap2/Fig2.16b.svg index ef00d5e5..db458710 100644 --- a/src/fig/chap2/Fig2.16b.svg +++ b/src/fig/chap2/Fig2.16b.svg @@ -202,7 +202,7 @@ transform="translate(-162.38252,-98.432183)"> 7 3 5 3 9 1 7 9 3 1 11 5 9 1 7 11 11 1 2 3 4 5 6 {A B C D E F G H} 17 {B C D E F G H} 9 A 8 {B C D} 5 {C D} 2 D 1 C 1 B 3 {E F G H} 4 {G H} 2 {E F} 2 E 1 F 1 H 1 add-complex sub-complex mul-complex div-complex Programs that use complex numbers Complex-arithmetic package representation representation Programs that use rational numbers + style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Inconsolata;-inkscape-font-specification:Inconsolata">Programs that use rational numbers Rational numbers in problem domain + style="font-size:13px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Libertinus Sans;-inkscape-font-specification:Libertinus Sans">Rational numbers in problem domain add-rat sub-rat ... + style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Inconsolata;-inkscape-font-specification:Inconsolata">add-rat sub-rat ... Rational numbers as numerators and denominators + style="font-size:13px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Libertinus Sans;-inkscape-font-specification:Libertinus Sans">Rational numbers as numerators and denominators make-rat numer denom + style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Inconsolata;-inkscape-font-specification:Inconsolata">make-rat numer denom Rational numbers as pairs + style="font-size:13px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Libertinus Sans;-inkscape-font-specification:Libertinus Sans">Rational numbers as pairs cons car cdr + style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Inconsolata;-inkscape-font-specification:Inconsolata">cons car cdr However pairs are implemented + style="font-size:13px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Libertinus Sans;-inkscape-font-specification:Libertinus Sans">However pairs are implemented Imaginary Real z = x + iy = reiA A y x add-complex sub-complex mul-complex div-complex Programs that use complex numbers Complex-arithmetic package representation representation real-part imag-part magnitude angle real-part-polar imag-part-polar magnitude-polar angle-polar real-part-rectangular imag-part-rectangular magnitude-rectangular angle-rectangular Types Polar Rectangular add sub mul div add-complex mul-complex sub-complex div-complex Programs that use numbers Generic arithmetic package Complex arithmetic Rectangular arithmetic arithmetic List structure and primitive machine arithmetic 3 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">3 4 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">4 complex + style="font-style:normal;font-weight:normal;-inkscape-font-specification:Inconsolata">complex rectangular + style="font-weight:normal;-inkscape-font-specification:Inconsolata">rectangular diff --git a/src/fig/chap2/Fig2.25.svg b/src/fig/chap2/Fig2.25.svg index e8b5f78d..a8ff7e38 100644 --- a/src/fig/chap2/Fig2.25.svg +++ b/src/fig/chap2/Fig2.25.svg @@ -172,7 +172,7 @@ transform="translate(-127.31529,-72.288183)"> complex real rational polygon quadrilateral kite trapezoid parallelogram rectangle rhombus square triangle triangle triangle right triangle 2 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">2 1 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">1 diff --git a/src/fig/chap2/Fig2.2d.svg b/src/fig/chap2/Fig2.2d.svg index 9f01cd35..c18bb9ff 100644 --- a/src/fig/chap2/Fig2.2d.svg +++ b/src/fig/chap2/Fig2.2d.svg @@ -251,7 +251,7 @@ style="display:inline"> 2 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">2 1 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">1 diff --git a/src/fig/chap2/Fig2.3c.svg b/src/fig/chap2/Fig2.3c.svg index 48897056..883f32ba 100644 --- a/src/fig/chap2/Fig2.3c.svg +++ b/src/fig/chap2/Fig2.3c.svg @@ -734,7 +734,7 @@ d="m 120,84.862183 c 0,1.380711 -1.11929,2.5 -2.5,2.5 -1.38071,0 -2.5,-1.119289 -2.5,-2.5 0,-1.380712 1.11929,-2.5 2.5,-2.5 1.38071,0 2.5,1.119288 2.5,2.5 z" /> 1 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">1 4 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">4 2 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">2 3 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">3 3 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">3 4 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">4 1 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">1 2 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">2 1 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">1 4 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">4 2 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">2 3 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">3 3 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">3 4 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">4 1 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">1 2 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">2 1 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">1 4 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">4 2 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">2 3 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">3 diff --git a/src/fig/chap2/Fig2.5c.svg b/src/fig/chap2/Fig2.5c.svg index 5235ca4b..0fd96274 100644 --- a/src/fig/chap2/Fig2.5c.svg +++ b/src/fig/chap2/Fig2.5c.svg @@ -742,7 +742,7 @@ sodipodi:nodetypes="cc" /> 4 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">4 1 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">1 2 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">2 3 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">3 (3 4) + sodipodi:docname="Fig2.6a.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + fit-margin-bottom="1" + inkscape:pagecheckerboard="0"> + originx="-152.89148" + originy="-455.989" + spacingx="1" + spacingy="1" /> @@ -106,150 +109,149 @@ transform="translate(-152.89148,-493.94153)"> + y="283.07648" + style="font-size:20px;line-height:1.25">  + y="258.79074" + style="font-size:20px;line-height:1.25">  + y="258.79074" + style="font-size:20px;line-height:1.25">  + y="250.93361" + style="font-size:20px;line-height:1.25">  + y="254.50504" + style="font-size:20px;line-height:1.25">  + style="font-size:22px;line-height:1.25">  + style="font-size:22px;line-height:1.25">  + y="347.36218" + style="font-size:22px;line-height:1.25">  + style="font-size:24px;line-height:1.25">  + y="380.93362" + style="font-size:24px;line-height:1.25">  + y="221.6479" + style="font-size:24px;line-height:1.25">  + y="396.64789" + style="font-size:24px;line-height:1.25">    + ((1 2) 3 4) + y="503.43353" + style="font-size:12px;line-height:1.25">((1 2) 3 4) (1 2) + y="542.36218" + style="font-size:12px;line-height:1.25">(1 2) 3 + y="560.36218" + style="font-size:12px;line-height:1.25">3 4 + y="560.36218" + style="font-size:12px;line-height:1.25">4 1 + y="595.36218" + style="font-size:12px;line-height:1.25">1 2 + y="595.36218" + style="font-size:12px;line-height:1.25">2 diff --git a/src/fig/chap2/Fig2.7d.svg b/src/fig/chap2/Fig2.7d.svg index 13d75f4b..f9a31597 100644 --- a/src/fig/chap2/Fig2.7d.svg +++ b/src/fig/chap2/Fig2.7d.svg @@ -333,7 +333,7 @@ style="display:inline"> tree leaves odd? square +, 0 integers fib even? A B C D I II III z:6 x:7 m:1 y:2 x:3 E1 W2: W1: globalglobalenv balance: 50 parameters: amountbody: body: ... E2 balance: 100 parameters: xbody: (define good-enough? ...) (define improve ...) (define sqrt-iter ...) (sqrt-iter 1.0) globalglobalenv E1 x:2 good-enough?: improve: ... sqrt-iter: ... parameters: guessbody: (< (abs ...) ...) guess: 1 guess: 1 call to sqrt-iter call to good-enough? c + style="font-weight:normal;-inkscape-font-specification:Inconsolata">c d + style="font-weight:normal;-inkscape-font-specification:Inconsolata">d y x e + style="font-weight:normal;-inkscape-font-specification:Inconsolata">e f + style="font-weight:normal;-inkscape-font-specification:Inconsolata">f a + style="font-weight:normal;-inkscape-font-specification:Inconsolata">a b + style="font-weight:normal;-inkscape-font-specification:Inconsolata">b c + style="font-weight:normal;-inkscape-font-specification:Inconsolata">c d + style="font-weight:normal;-inkscape-font-specification:Inconsolata">d y x e + style="font-weight:normal;-inkscape-font-specification:Inconsolata">e f + style="font-weight:normal;-inkscape-font-specification:Inconsolata">f a + style="font-weight:normal;-inkscape-font-specification:Inconsolata">a b + style="font-weight:normal;-inkscape-font-specification:Inconsolata">b c + style="font-weight:normal;-inkscape-font-specification:Inconsolata">c d + style="font-weight:normal;-inkscape-font-specification:Inconsolata">d y x e + style="font-weight:normal;-inkscape-font-specification:Inconsolata">e f + style="font-weight:normal;-inkscape-font-specification:Inconsolata">f a + style="font-weight:normal;-inkscape-font-specification:Inconsolata">a b + style="font-weight:normal;-inkscape-font-specification:Inconsolata">b c + style="font-weight:normal;-inkscape-font-specification:Inconsolata">c d + style="font-weight:normal;-inkscape-font-specification:Inconsolata">d y x e + style="font-weight:normal;-inkscape-font-specification:Inconsolata">e f + style="font-weight:normal;-inkscape-font-specification:Inconsolata">f a + style="font-weight:normal;-inkscape-font-specification:Inconsolata">a b + style="font-weight:normal;-inkscape-font-specification:Inconsolata">b z1 x a + style="font-weight:normal;-inkscape-font-specification:Inconsolata">a b + style="font-weight:normal;-inkscape-font-specification:Inconsolata">b diff --git a/src/fig/chap3/Fig3.17b.svg b/src/fig/chap3/Fig3.17b.svg index c87c4ffa..becfeb7c 100644 --- a/src/fig/chap3/Fig3.17b.svg +++ b/src/fig/chap3/Fig3.17b.svg @@ -521,7 +521,7 @@ transform="translate(12.443399,-102.09642)"> a + style="font-weight:normal;-inkscape-font-specification:Inconsolata">a b + style="font-weight:normal;-inkscape-font-specification:Inconsolata">b c + style="font-weight:normal;-inkscape-font-specification:Inconsolata">c front-ptr q a + style="font-weight:normal;-inkscape-font-specification:Inconsolata">a b + style="font-weight:normal;-inkscape-font-specification:Inconsolata">b front-ptr q a + style="font-weight:normal;-inkscape-font-specification:Inconsolata">a b + style="font-weight:normal;-inkscape-font-specification:Inconsolata">b c + style="font-weight:normal;-inkscape-font-specification:Inconsolata">c d + style="font-weight:normal;-inkscape-font-specification:Inconsolata">d diff --git a/src/fig/chap3/Fig3.21b.svg b/src/fig/chap3/Fig3.21b.svg index 5dc52233..c15e41e4 100644 --- a/src/fig/chap3/Fig3.21b.svg +++ b/src/fig/chap3/Fig3.21b.svg @@ -471,7 +471,7 @@ transform="translate(-104.0533,-77.096432)"> front-ptr q a + style="font-weight:normal;-inkscape-font-specification:Inconsolata">a b + style="font-weight:normal;-inkscape-font-specification:Inconsolata">b c + style="font-weight:normal;-inkscape-font-specification:Inconsolata">c d + style="font-weight:normal;-inkscape-font-specification:Inconsolata">d diff --git a/src/fig/chap3/Fig3.22c.svg b/src/fig/chap3/Fig3.22c.svg index 420c845b..f6ce7ef5 100644 --- a/src/fig/chap3/Fig3.22c.svg +++ b/src/fig/chap3/Fig3.22c.svg @@ -768,7 +768,7 @@ transform="translate(-134.73425,-98.881183)"> a + style="font-weight:normal;-inkscape-font-specification:Inconsolata">a b + style="font-weight:normal;-inkscape-font-specification:Inconsolata">b c + style="font-weight:normal;-inkscape-font-specification:Inconsolata">c 1 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">1 2 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">2 3 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">3 *table* + style="font-weight:normal;-inkscape-font-specification:Inconsolata">*table* + + style="font-weight:normal;-inkscape-font-specification:Inconsolata">+ - + style="font-weight:normal;-inkscape-font-specification:Inconsolata">- * + style="font-weight:normal;-inkscape-font-specification:Inconsolata">* 43 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">43 45 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">45 42 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">42 *table* + style="font-weight:normal;-inkscape-font-specification:Inconsolata">*table* a + style="font-weight:normal;-inkscape-font-specification:Inconsolata">a b + style="font-weight:normal;-inkscape-font-specification:Inconsolata">b 97 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">97 98 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">98 letters + style="font-weight:normal;-inkscape-font-specification:Inconsolata">letters math + style="font-weight:normal;-inkscape-font-specification:Inconsolata">math Inverter And-gate D E A B S A B in SUM out 1 1 1 2 2 2 3 3 3 n n n = 0 1 C 2 3 n n-1 FA FA FA m1 m2 p * p m1 m2 * u v 32 5 9 a1 a2 s + F C w x Peter Access balance: $100 0=90 set! balance to $90 time Bank Paul $100 $90 $75 Access balance: $100 =75 set! balance to $75 diff --git a/src/fig/chap3/Fig3.2b.svg b/src/fig/chap3/Fig3.2b.svg index 7ab0988a..ee465457 100644 --- a/src/fig/chap3/Fig3.2b.svg +++ b/src/fig/chap3/Fig3.2b.svg @@ -229,7 +229,7 @@ d="m 199.17081,180.36218 c 0,6.16947 -5.00134,11.17081 -11.17081,11.17081 -6.16947,0 -11.17081,-5.00134 -11.17081,-11.17081 0,-6.16946 5.00134,-11.17081 11.17081,-11.17081 6.16947,0 11.17081,5.00135 11.17081,11.17081 z" /> other variables square: globalglobalenv (* x x)) parameters: xbody: (* x x) diff --git a/src/fig/chap3/Fig3.30b.svg b/src/fig/chap3/Fig3.30b.svg index 81716f99..b0d364a7 100644 --- a/src/fig/chap3/Fig3.30b.svg +++ b/src/fig/chap3/Fig3.30b.svg @@ -889,7 +889,7 @@ transform="translate(-108.16106,-61.972419)"> $100 $7 $5 $300 $0 $305 $305 $25 $65 $17 $17 $90 W W D time Peter Bank1 Paul divisible? sieve sieve car cdr add cons initial-value integral input v v0 R C i + -- v scale: R integral add scale: 1 C + style="font-style:oblique;-inkscape-font-specification:Inconsolata Oblique">C @@ -517,7 +517,7 @@ id="text10849" y="580.52289" x="291" - style="font-size:13px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Linux Libertine O;-inkscape-font-specification:Sans Italic" + style="font-size:13px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Libertinus Serif;-inkscape-font-specification:Sans Italic" xml:space="preserve">v = v= v00 + 1 i + 1 idt dt + Ri + style="font-style:normal;-inkscape-font-specification:Libertinus Serif">+ Ri 0 y0 dy y integral map: f diff --git a/src/fig/chap3/Fig3.35a.svg b/src/fig/chap3/Fig3.35a.svg index 5dc3c340..786a30ca 100644 --- a/src/fig/chap3/Fig3.35a.svg +++ b/src/fig/chap3/Fig3.35a.svg @@ -391,7 +391,7 @@ transform="translate(-64.610236,-445.28818)"> ddy y0 dy y scale: b integral integral scale: a add dy0 diff --git a/src/fig/chap3/Fig3.36.svg b/src/fig/chap3/Fig3.36.svg index 5682a00e..708c433a 100644 --- a/src/fig/chap3/Fig3.36.svg +++ b/src/fig/chap3/Fig3.36.svg @@ -154,7 +154,7 @@ transform="translate(-332.42074,-106.65518)"> + -- R R R L L + -- L C C C + L 0 L C C 0 scale: 1/L + style="font-size:10.5px;font-style:normal;-inkscape-font-specification:Inconsolata">1/L integral scale:-1/C + style="font-size:10.5px;font-style:normal;-inkscape-font-specification:Inconsolata">1/C integral scale:-R/L + style="font-size:10.5px;font-style:oblique;-inkscape-font-specification:Inconsolata Oblique">R/L merge account Paul's requests + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Libertinus Sans;-inkscape-font-specification:Libertinus Sans">Paul's requests Peter's requests + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Libertinus Sans;-inkscape-font-specification:Libertinus Sans">Peter's requests diff --git a/src/fig/chap3/Fig3.3b.svg b/src/fig/chap3/Fig3.3b.svg index c881e8cd..b612f459 100644 --- a/src/fig/chap3/Fig3.3b.svg +++ b/src/fig/chap3/Fig3.3b.svg @@ -281,7 +281,7 @@ transform="translate(-63.87,-76.096435)"> E1 (* x x) parameters: xbody: (* x x) (square 5) globalglobalenv other variables square: square: sum-of-squares: f: globalglobalenv parameters: abody: (sum-of-squares (+ a 1) (+ a 1) (* a 2)) parameters: xbody: (* x x) parameters: x,ybody: (+ (square x) (square y)) (square y)) (* x x) x:10 E4 (* x x) x:6 E3 (square y)) x:6 y:10 E2 (* a 2)) a:5 E1 (f 5) globalglobalenv diff --git a/src/fig/chap3/Fig3.6b.svg b/src/fig/chap3/Fig3.6b.svg index fc6c64f1..273cfaa5 100644 --- a/src/fig/chap3/Fig3.6b.svg +++ b/src/fig/chap3/Fig3.6b.svg @@ -228,7 +228,7 @@ transform="translate(-65.416,-82.096435)"> parameters: balancebody: (lambda (amount) (if (>= balance amount) (if (>= balance amount) (begin (set! balance (-- balance amount)) balance) "insufficient funds")) globalglobalenv E1 make-withdraw: W1: globalglobalenv balance: 100 parameters: balancebody: ... parameters: amountbody: (if (>= balance amount) (begin (set! balance (- balance amount)) (begin (set! balance (- balance amount)) balance) balance) "insufficient funds") + style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:139.99999762%;font-family:Inconsolata;-inkscape-font-specification:Inconsolata"> "insufficient funds") diff --git a/src/fig/chap3/Fig3.8c.svg b/src/fig/chap3/Fig3.8c.svg index 2e39f6c1..081522b2 100644 --- a/src/fig/chap3/Fig3.8c.svg +++ b/src/fig/chap3/Fig3.8c.svg @@ -334,7 +334,7 @@ transform="translate(-75.416,-72.096438)"> E1 make-withdraw: ... W1: globalglobalenv balance: 100 parameters: amountbody: body: ... amount: 50 by the set! E1 make-withdraw: ... W1: globalglobalenv balance: 50 parameters: amountbody: body: ... diff --git a/src/fig/chap4/Fig4.1.svg b/src/fig/chap4/Fig4.1.svg index c21247ed..0c459c84 100644 --- a/src/fig/chap4/Fig4.1.svg +++ b/src/fig/chap4/Fig4.1.svg @@ -202,7 +202,7 @@ transform="translate(-55.208,-55.118304)"> Eval Apply Arguments = factorial -- * factorial 6 720 1 1 (* (factorial (- n 1)) n))) eval 6 of frames filtered and extended query (job ?x ?y) (and A B) data base of frames of frames A merge A B (or A B) data base of frames fact done fact-done) continue * -- sn rn sc rc 0 1 2 3 4 5 6 7 8 ... Index the-cars the-cdrs p5 n3 n4 n1 n2 ... p2 p4 e0 p7 e0 ((1 2) 3 4) 1 2 4 5 4 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">4 1 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">1 2 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">2 3 + style="font-weight:normal;-inkscape-font-specification:Inconsolata">3 diff --git a/src/fig/chap5/Fig5.15a.svg b/src/fig/chap5/Fig5.15a.svg index d787fdff..a91a76f7 100644 --- a/src/fig/chap5/Fig5.15a.svg +++ b/src/fig/chap5/Fig5.15a.svg @@ -172,7 +172,7 @@ transform="translate(-28.213375,-63.288183)"> free Just before garbage collection mixture of useful data and garbage free memory Just after garbage collection discarded memory useful data free area memory memory memory memory the-cars the-cdrs the-cars the-cdrs new-cars new-cdrs new-cars a b t rem a←b t←r b←t 0 start no done yes = t←r a←b (goto (label gcd-loop))) read a b t rem a←b t←r b←t 0 = print a←rd b←rd a←b t←a b←t t←d a b t -- < 0 = = start yes done no < no yes t←a a←b b←t rem a←b t←r rem c←d s←r