Index

All page numbers appearing here refer to the printed version of this book and also serve as hypertext links to the corresponding locations in the electronic version of this book.


! (exclamation point), 8
" (double quote), 158
# (hash), 140
#\, 153
#b (binary), 140
#d (decimal), 140
#f, 7, 35, 122
#o (octal), 140
#t, 7, 35, 122
#x (hexadecimal), 140
' (quote), 17, 22, 57, 121
(), 7, 18
*, 16, 143
+, 16, 142
, (unquote), 122
,@ (unquote-splicing), 122
-, 16, 143
->, 8
. (dot), 19
... (ellipses), 59, 187
/, 16, 143
; (comment), 7, 277
<, 141
<=, 141
=, 141
=>, 98
>, 141
>=, 141
? (question mark), 8, 36
_ (underscore), 59, 189, 203
` (quasiquote), 122
abs, 33, 146, 150
abstract objects, 51, 238
acos, 152
actual parameters, 26, 86
Algol 60, 5
and, 35, 60, 97
angle, 150
append, 44, 136
apply, 95
arbitrary precision, 139
asin, 152
assignment, 91
assignments, 45, 91
assoc, 138
association list, 138, 234
assq, 138
assv, 138
atan, 152
atom?, 39
auxiliary keywords, 59, 187
base case, 40
be-like-begin, 202
begin, 49, 58, 90, 96, 277
binary trees, 132
binding, 4
block structure, 4
boolean values, 7
boolean?, 129
bound-identifier=?, 193
brackets ( [ ] ), 7, 132
break, 198
C, 224
caaaar, 134
caaadr, 134
caaar, 134
caadar, 134
caaddr, 134
caadr, 134
caar, 134
caar, cadr, ..., cddddr, 33
cadaar, 134
cadadr, 134
cadar, 134
caddar, 134
cadddr, 134
caddr, 134
cadr, 30, 31, 33, 134
call-by-name, 238
call-by-value, 237
call-with-current-continuation, 71, 104, 107, 113, 256
call-with-input-file, 172
call-with-output-file, 176
call-with-values, 110, 111
call/cc, 71, 104, 107, 113, 255, 256
car, 18, 132, 133
case, 52, 99, 196
cdaaar, 134
cdaadr, 134
cdaar, 134
cdadar, 134
cdaddr, 134
cdadr, 134
cdar, 134
cddaar, 134
cddadr, 134
cddar, 134
cdddar, 134
cddddr, 134
cdddr, 134
cddr, 30, 33, 134
cdr, 18, 36, 132, 133
ceiling, 146
char->integer, 156
char-alphabetic?, 155
char-ci<=?, 154
char-ci<?, 154
char-ci=?, 154
char-ci>=?, 154
char-ci>?, 154
char-downcase, 156
char-lower-case?, 155
char-numeric?, 155
char-ready?, 175
char-upcase, 156
char-upper-case?, 155
char-whitespace?, 156
char<=?, 153
char<?, 153
char=?, 153
char>=?, 153
char>?, 153
char?, 131
characters, 153
Chez Scheme, ix, 37, 40, 114, 216
circular lists, 133
close-input-port, 172
close-output-port, 175
comments, 7, 277
Common Lisp, 6
compiler, 4
complete, see engines
complex numbers, 139, 242
complex?, 130, 139
compose, 33
cond, 38, 42, 98, 196
conditionals, 97
cons, 19, 133
cons cell, 132
consing, 19
constant, 121
constants, 21, 121
continuation passing style, 248
continuation-passing style, 75
continuations, 5, 70, 105, 250
control structures, 95
core syntactic forms, 4, 22, 57, 234
cos, 152
CPS, 75
current-input-port, 171
current-output-port, 175
cyclic lists, 54
d (double), 140
data, 121
datum, 279
datum->syntax-object, 197, 205, 209
define, 29, 77, 89
define-integrable, 206
define-object, 238
define-structure, 207
define-syntax, 59, 183, 184, 220
defining syntactic extensions, 58
definitions, 277
defun syntax, 31, 58
delay, 108
delayed evaluation, 238
delq!, 52
denominator, 149
derived expression, 278
describe-segment, 112
display, 178, 228
divisors, 100, 102
do, 101, 201
dot ( . ), 19
dotted pair, 19, 133
double, 26, 31
double quotes, 158
double-any, 29
double-cons, 26, 31
doubler, 31
doubly recursive, 67
dxdy, 111
dynamic allocation, 3
dynamic-wind, 105
ellipses ( ... ), 59, 187
else, 98, 99
empty list, 7, 18
engines, 250
environment, 234
eof object, 171
eof-object?, 171, 174
eq?, 123
equal?, 127
equivalence predicates, 123
eqv?, 36, 125
error, 37, 216
errors, 8
eval, 116
even?, 45, 63, 78, 145
exact->inexact, 148
exact?, 139, 141
exactness, 139, 148
exactness preserving, 139
exclamation point ( ! ), 8
exp, 151
expansion, 57
expire, see engines
expressions, 7
expt, 148
extended examples, 213
f (single), 140
factor, 68, 69, 70
factorial, 66, 73, 101
false, 7, 35
fast Fourier transform (FFT), 242
fenders, 191, 193
fibonacci, 66, 92, 101, 252
Fibonacci numbers, 66, 92
file, 171
first-class data values, 3
first-class procedures, 5
flip-flop, 91
floating point, 139
floor, 146
fluid binding, 106
fluid-let-syntax, 186, 206
for-each, 103
force, 109
formal parameters, 26, 28, 86
formatted output, 231
fprintf, 231
free variable, 27
free-identifier=?, 193
frequency, 224
garbage collector, 3
gcd, 147
generate-temporaries, 199
getq, 52
goodbye, 40
hare and tortoise, 54, 64
hash ( # ), 140
identifier-syntax, 204, 205
identifier?, 193
identifiers, 6, 7, 278
if, 33, 34, 38, 49, 57, 97
imag-part, 150
implicit begin, 96
improper list, 19, 132
include, 198
inexact->exact, 148
inexact?, 139, 141
inheritance, 242
input-port?, 171
integer->char, 158
integer-divide, 76
integer?, 130, 139
integers, 139
integrable procedures, 206
interaction-environment, 117
internal define-syntax, 183
internal definitions, 77, 86, 90
internal state, 47
interpret, 234
interpreter, 4, 234
iteration, 5, 43, 65, 100, 101, 102, 103
keywords, 4, 59, 184
l (long), 140
lambda, 25, 28, 57, 86
lazy, 49
lazy evaluation, 49, 108
lcm, 147
length, 40, 135
let, 23, 27, 62, 87, 100
let*, 61, 88
let-bound variables, 23
let-syntax, 183, 185, 203, 277, 278
let-values, 115, 200
letrec, 63, 78, 88, 90, 199
letrec-syntax, 183, 185, 203, 277, 278
lexical scoping, 4, 5, 24, 61
light-weight threads, 250
Lisp, ix, 5
lisp-cdr, 36
list, 19, 30, 31, 134
list constants, 7
list->string, 163
list->vector, 166
list-copy, 41
list-ref, 135
list-tail, 135
list?, 54, 64, 65, 78, 134
lists, 17, 18, 132
literals, 187
load, 13, 179
local variable bindings, 87
log, 151
loop, 198
looping, 5
macros, 183
magnitude, 146, 150
make-counter, 48, 52
make-list, 44
make-polar, 150
make-promise, 109, 113
make-queue, 52
make-rectangular, 150
make-stack, 50, 52
make-string, 160
make-vector, 164
map, 43, 45, 102, 223
map1, 44
mapping, 43, 102, 103
matrix multiplication, 213
max, 147
member, 137
memq, 137
memv, 41, 137
merge, 219
messages, 50, 238
meta-circular interpreter, 234
method, 205
min, 147
modulo, 145
mul, 214
multiple values, 8
multiprocessing, 250
mutually recursive procedures, 63, 88
named let, 64, 68, 100
naming conventions, 7
negative?, 144
nested engines, 258
nested let expressions, 88
newline, 178
nondeterministic computations, 250, 253
nonlocal exits, 104, 105
not, 34, 97
null-environment, 117
null?, 36, 129
number->string, 153
number?, 37, 130
numbers, 16, 139, 279
numerator, 149
object identity, 123
object-oriented programming, 205, 238
objects, 3
occur free, 27, 29
odd?, 45, 63, 78, 145
open-input-file, 171
open-output-file, 175
operating system, 253, 258
operations on objects, 121
operator precedence, 16
or, 34, 35, 61, 98
order of evaluation, 22, 95
output-port?, 175
pair?, 37, 130
pairs, 19, 132
pattern variable, 187
pattern variables, 59, 191
patterns, 187
peek-char, 174
Petite Chez Scheme, ix
pointers, 4
por (parallel-or), 254
ports, 171
positive?, 144
predicates, 8, 36, 122
prefix notation, 15, 16
primitive procedures, 4
printf, 232
procedure application, 16, 17, 21, 26, 95
procedure definition, 5, 30, 89
procedure?, 132
procedures, 25, 85, 86
product, 72, 76
program, 277
proper list, 19, 54, 132
putq!, 52
quadratic-formula, 46
quasiquote` ), 122
question mark ( ? ), 8, 36
queue, 51
quote' ), 17, 22, 57, 121
quotient, 145
rational numbers, 139
rational?, 130, 139
rationalize, 149
read, 173
read-char, 174
real numbers, 139
real-part, 149
real?, 130, 139
rec, 200
reciprocal, 15, 35, 37, 77
recursion, 5, 39, 62, 100
recursion step, 40
recursive procedure, 40
remainder, 145
remv, 42
retry, 73, 77
reverse, 137
Revised Reports, ix, 3
round, 146
round-robin, 253
s (short), 140
Scheme standard, ix, 3
scheme-report-environment, 117
scope, 24
segment-length, 111
segment-slope, 111
semicolon ( ; ), 7, 277
sequence, 202
sequencing, 96
set!, 45, 57, 91
set-car!, 133
set-cdr!, 54, 134
set-of, 220
sets, 220
shadowing, 4, 24, 30
shhh, 48
shorter, 39, 45
shorter?, 45
side effects, 8, 96
sin, 152
sort, 218
split, 112
sqrt, 151
square, 14
stack objects, 50
streams, 109
string, 160
string->list, 163
string->number, 152
string->symbol, 167
string-append, 161
string-ci<=?, 160
string-ci<?, 160
string-ci=?, 160
string-ci>=?, 160
string-ci>?, 160
string-copy, 161
string-fill!, 162
string-length, 160
string-ref, 161
string-set!, 161
string<=?, 158
string<?, 158
string=?, 158
string>=?, 158
string>?, 158
string?, 37, 131
strings, 14, 158
structured forms, 6
structures, 207
substring, 162
sum, 62
symbol table, 167
symbol->string, 168
symbol?, 37, 132
symbols, 18, 166
syntactic extensions, 5, 22, 57, 58, 183, 277
syntactic forms, 17, 57, 183, 277
syntax, 192
syntax-case, 183, 191
syntax-object->datum, 197
syntax-rules, 183, 187, 192, 221
tail call, 5, 65
tail recursion, 5, 65
tan, 152
tconc, 51
tell, 48
templates, 188
threads, 250
thunk, 49, 105
ticks, see engines
timed preemption, 250
timer interrupts, 254
tokens, 277
top-level definitions, 29, 89
trace, 40
tracing, 40
transcript, 13, 179
transcript-off, 13, 179
transcript-on, 13, 179
transformer, 59
tree-copy, 42
true, 7, 35
truncate, 146
type predicates, 37
underscore ( _ ), 59, 189, 203
unification, 247
unify, 248
unless, 62
unquote, ), 122
unquote-splicing,@ ), 122
unspecified, 8
unwind-protect (in Lisp), 105
values, 110
variable binding, 23, 85
variable reference, 85
variables, 4, 18, 22, 29, 45
vector, 164
vector->list, 166
vector-fill!, 165
vector-length, 164
vector-ref, 165
vector-set!, 165
vector?, 132
vectors, 53, 164, 215
when, 62
whitespace, 156, 277
whitespace characters, 7
winders, see dynamic-wind
with-input-from-file, 173
with-output-to-file, 177
with-syntax, 196
write, 177, 228
write-char, 178
x++, 204
zero?, 144

R. Kent Dybvig / The Scheme Programming Language, Third Edition
Copyright © 2003 The MIT Press. Electronically reproduced by permission.
Illustrations © 2003 Jean-Pierre Hébert
ISBN 0-262-54148-3 / LOC QA76.73.S34D93
to order this book / about this book

http://www.scheme.com