diff --git a/README.md b/README.md
index dd1e7406..f439f5c1 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,4 @@
-SICP
-====
+# SICP
@@ -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 @@
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
@@ -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 @@
-
-
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