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


R. Kent Dybvig
The Scheme Programming Language, Second Edition
© 1996. Electronically reproduced by permission of Prentice Hall, Upper Saddle River, New Jersey.
http://www.scheme.com
Illustrations © 1997 Jean-Pierre Hébert
to order this book
about this book