Index

Any inaccuracies in this index may be explained by the fact that it has been prepared with the help of a computer.

Donald E. Knuth, Fundamental Algorithms (Volume 1 of The Art of Computer Programming)


! in names
" (double quote)
calculus, see lambda calculus
notation for mathematical function
, see pi
sum (sigma) notation
, see theta
' (single quote)
    read and, [2]
* (primitive multiplication procedure)
+ (primitive addition procedure)
, (comma, used with backquote)
- (primitive subtraction procedure)
    as negation
/ (primitive division procedure)
< (primitive numeric comparison predicate)
= (primitive numeric equality predicate)
=number?
=zero? (generic)
    for polynomials
> (primitive numeric comparison predicate)
>=, [2]
? , in predicate names
#f
#t
` (backquote)
;, see semicolon


Abelson, Harold
abs, [2], [3]
absolute value
abstract data, see also data abstraction
abstract models for data
abstract syntax
    in metacircular evaluator
    in query interpreter
abstraction, see also means of abstraction; data abstraction; higher-order procedures
    common pattern and
    metalinguistic
    procedural
    in register-machine design
    of search in nondeterministic programming
abstraction barriers, [2], [3]
    in complex-number system
    in generic arithmetic system
accelerated-sequence
accumulate, [2]
    same as fold-right
accumulate-n
accumulator, [2]
Áchárya, Bháscara
Ackermann's function
acquire a mutex
actions, in register machine
actual-value
Ada
    recursive procedures
Adams, Norman I., IV
add (generic)
    used for polynomial coefficients, [2]
add-action!, [2]
add-binding-to-frame!
add-complex
add-complex-to-schemenum
add-interval
add-lists
add-poly
add-rat
add-rule-or-assertion!
add-streams
add-terms
add-to-agenda!, [2]
add-vect
addend
adder
    full
    half
    ripple-carry
adder (primitive constraint)
additivity, [2], [3], [4]
address
address arithmetic
Adelman, Leonard
adjoin-arg
adjoin-set
    binary-tree representation
    ordered-list representation
    unordered-list representation
    for weighted sets
adjoin-term, [2]
advance-pc
after-delay, [2]
agenda, see digital-circuit simulation
A'h-mose
algebra, symbolic, see symbolic algebra
algebraic expression
    differentiating
    representing
    simplifying
algebraic specification for data
Algol
    block structure
    call-by-name argument passing, [2]
    thunks, [2]
    weakness in handling compound objects
algorithm
    optimal
    probabilistic, [2]
aliasing
all-regs (compiler)
Allen, John
alternative of if
always-true
amb
amb evaluator, see nondeterministic evaluator
ambeval
an-element-of
an-integer-starting-from
analog computer
analyze
    metacircular
    nondeterministic
analyze-...
    metacircular, [2]
    nondeterministic
analyze-amb
analyzing evaluator
    as basis for nondeterministic evaluator
    let
and (query language)
    evaluation of, [2], [3]
and (special form)
    evaluation of
    why a special form
    with no subexpressions
and-gate
    and-gate
angle
    data-directed
    polar representation
    rectangular representation
    with tagged data
angle-polar
angle-rectangular
announce-output
APL
Appel, Andrew W.
append, [2], [3]
    as accumulation
    append! vs.
    with arbitrary number of arguments
    as register machine
    ``what is'' (rules) vs. ``how to'' (procedure)
append!
    as register machine
append-instruction-sequences, [2]
append-to-form (rules)
application?
applicative-order evaluation
    in Lisp
    normal order vs., [2], [3]
apply (lazy)
apply (metacircular)
    primitive apply vs.
apply (primitive procedure)
apply-dispatch
    modified for compiled code
apply-generic
    with coercion, [2]
    with coercion by raising
    with coercion of multiple arguments
    with coercion to simplify
    with message passing
    with tower of types
apply-primitive-procedure, [2], [3]
apply-rules
arbiter
arctangent
argl register
argument passing, see call-by-name argument passing; call-by-need argument passing
argument(s)
    arbitrary number of, [2]
    delayed
Aristotle's De caelo (Buridan's commentary on)
arithmetic
    address arithmetic
    generic, see also generic arithmetic operations
    on complex numbers
    on intervals
    on polynomials, see polynomial arithmetic
    on power series, [2]
    on rational numbers
    primitive procedures for
articles
ASCII code
assemble, [2]
assembler, [2]
assert! (query interpreter)
assertion
    implicit
assign (in register machine)
    simulating
    storing label in register
assign-reg-name
assign-value-exp
assignment, see also set!
    benefits of
    bugs associated with, [2]
    costs of
assignment operator, see also set!
assignment-value
assignment-variable
assignment?
assoc
atan (primitive procedure)
atomic operations supported in hardware
atomic requirement for test-and-set!
attach-tag
    using Scheme data types
augend
automagically
automatic search, see also search
    history of
automatic storage allocation
average
average damping
average-damp
averager (constraint)


B-tree
backquote
backtracking, see also nondeterministic computing
Backus, John
Baker, Henry G., Jr.
balanced binary tree, see also binary tree
balanced mobile
bank account, [2]
    exchanging balances
    joint, [2]
    joint, modeled with streams
    joint, with concurrent access
    password-protected
    serialized
    stream model
    transferring money
barrier synchronization
Barth, John
Basic
    restrictions on compound data
    weakness in handling compound objects
Batali, John Dean
begin (special form)
    implicit in consequent of cond and in procedure body
begin-actions
begin?
below, [2]
Bertrand's Hypothesis
beside, [2]
bignum
binary numbers, addition of, see adder
binary search
binary tree
    balanced
    converting a list to a
    converting to a list
    for Huffman encoding
    represented with lists
    sets represented as
    table structured as
bind
binding
    deep
binomial coefficients
black box
block structure, [2]
    in environment model
    in query language
blocked process
body of a procedure
Bolt Beranek and Newman Inc.
Borning, Alan
Borodin, Alan
bound variable
box-and-pointer notation
    end-of-list marker
branch (in register machine)
    simulating
branch of a tree
branch-dest
breakpoint
broken heart
bug
    capturing a free variable
    order of assignments
    side effect with aliasing
bureaucracy
Buridan, Jean
busy-waiting


C
    compiling Scheme into
    error handling, [2]
    recursive procedures
    restrictions on compound data
    Scheme interpreter written in, [2]
ca...r
cache-coherence protocols
cadr
calculator, fixed points with
call-by-name argument passing, [2]
call-by-need argument passing, [2]
    memoization and
call-each
cancer of the semicolon
canonical form, for polynomials
capturing a free variable
car (primitive procedure)
    axiom for
    implemented with vectors
    as list operation
    origin of the name
    procedural implementation of, [2], [3], [4], [5]
Carmichael numbers, [2]
case analysis
    data-directed programming vs.
    general, see also cond
    with two cases (if)
cd...r
cdr (primitive procedure)
    axiom for
    implemented with vectors
    as list operation
    origin of the name
    procedural implementation of, [2], [3], [4], [5]
cdr down a list
cell, in serializer implementation
celsius-fahrenheit-converter
    expression-oriented
center
Cesàro, Ernesto
cesaro-stream
cesaro-test
Chaitin, Gregory
Chandah-sutra
change and sameness
    meaning of
    shared data and
changing money, see counting change
chaos in the Solar System
Chapman, David
character strings
    primitive procedures for, [2]
    quotation of
character, ASCII encoding
Charniak, Eugene
Chebyshev, Pafnutii L'vovich
chess, eight-queens puzzle, [2]
chip implementation of Scheme, [2]
chronological backtracking
Chu Shih-chieh
Church numerals
Church, Alonzo, [2]
Church-Turing thesis
circuit
    digital, see digital-circuit simulation
    modeled with streams, [2]
Clark, Keith L.
clause, of a cond
    additional syntax
Clinger, William, [2]
closed world assumption
closure
    in abstract algebra
    closure property of cons
    closure property of picture-language operations, [2]
    lack of in many languages
coal, bituminous
code
    ASCII
    fixed-length
    Huffman, see Huffman code
    Morse
    prefix
    variable-length
code generator
    arguments of
    value of
coeff, [2]
coercion
    in algebraic manipulation
    in polynomial arithmetic
    procedure
    table
Colmerauer, Alain
combination
    combination as operator of
    compound expression as operator of
    evaluation of
    lambda expression as operator of
    as operator of combination
    as a tree
combination, means of, see also closure
comma, used with backquote
comments in programs
Common Lisp
    treatment of nil
compacting garbage collector
compilation, see compiler
compile
compile-and-go, [2]
compile-and-run
compile-application
compile-assignment
compile-definition
compile-if
compile-lambda
compile-linkage
compile-proc-appl
compile-procedure-call
compile-quoted
compile-self-evaluating
compile-sequence
compile-time environment, [2], [3]
    open coding and
compile-variable
compiled-apply
compiled-procedure-entry
compiled-procedure-env
compiled-procedure?
compiler
    interpreter vs., [2]
    tail recursion, stack allocation, and garbage-collection
compiler for Scheme, see also code generator; compile-time environment; instruction sequence; linkage descriptor; target register
    analyzing evaluator vs., [2]
    assignments
    code generators, see compile-...
    combinations
    conditionals
    definitions
    efficiency
    example compilation
    explicit-control evaluator vs., [2], [3]
    expression-syntax procedures
    interfacing to evaluator
    label generation
    lambda expressions
    lexical addressing
    linkage code
    machine-operation use
    monitoring performance (stack use) of compiled code, [2], [3]
    open coding of primitives, [2]
    order of operand evaluation
    procedure applications
    quotations
    register use, [2], [3]
    running compiled code
    scanning out internal definitions, [2]
    self-evaluating expressions
    sequences of expressions
    stack usage, [2], [3]
    structure of
    tail-recursive code generated by
    variables
complex package
complex numbers
    polar representation
    rectangular representation
    rectangular vs. polar form
    represented as tagged data
complex->complex
complex-number arithmetic
    interfaced to generic arithmetic system
    structure of system
composition of functions
compound data, need for
compound expression, see also combination; special form
    as operator of combination
compound procedure, see also procedure
    used like primitive procedure
compound query
    processing, [2], [3], [4], [5]
compound-apply
compound-procedure?
computability, [2]
computational process, see also process
computer science, [2]
    mathematics vs., [2]
concrete data representation
concurrency
    correctness of concurrent programs
    deadlock
    functional programming and
    mechanisms for controlling
cond (special form)
    additional clause syntax
    clause
    evaluation of
    if vs.
    implicit begin in consequent
cond->if
cond-actions
cond-clauses
cond-else-clause?
cond-predicate
cond?
conditional expression
    cond
    if
congruent modulo n
conjoin
connect, [2]
connector(s), in constraint system
    operations on
    representing
Conniver
cons (primitive procedure)
    axiom for
    closure property of
    implemented with mutators
    implemented with vectors
    as list operation
    meaning of the name
    procedural implementation of, [2], [3], [4], [5], [6]
cons up a list
cons-stream (special form), [2]
    lazy evaluation and
    why a special form
consciousness, expansion of
consequent
    of cond clause
    of if
const (in register machine)
    simulating
    syntax of
constant (primitive constraint)
constant, specifying in register machine
constant-exp
constant-exp-value
constraint network
constraint(s)
    primitive
    propagation of
construct-arglist
constructor
    as abstraction barrier
contents
    using Scheme data types
continuation
    in nondeterministic evaluator, [2], see also failure continuation; success continuation
    in register-machine simulator
continue register
    in explicit-control evaluator
    recursion and
continued fraction
    e as
    golden ratio as
    tangent as
control structure
controller for register machine
    controller diagram
conventional interface
    sequence as
Cormen, Thomas H.
corner-split
correctness of a program
cos (primitive procedure)
cosine
    fixed point of
    power series for
cosmic radiation
count-change
count-leaves, [2]
    as accumulation
    as register machine
count-pairs
counting change, [2]
credit-card accounts, international
Cressey, David
cross-type operations
cryptography
cube, [2], [3]
cube root
    as fixed point
    by Newton's method
cube-root
current time, for simulation agenda
current-time, [2]
cycle in list
    detecting


Darlington, John
data, [2]
    abstract, see also data abstraction
    abstract models for
    algebraic specification for
    compound
    concrete representation of
    hierarchical, [2]
    list-structured
    meaning of
    mutable, see mutable data objects
    numerical
    procedural representation of
    as program
    shared
    symbolic
    tagged, [2]
data abstraction, [2], [3], [4], [5], see also metacircular evaluator
    for queue
data base
    data-directed programming and
    indexing, [2]
    Insatiable Enterprises personnel
    logic programming and
    Microshaft personnel
    as set of records
data paths for register machine
    data-path diagram
data types
    in Lisp
    in strongly typed languages
data-directed programming, [2]
    case analysis vs.
    in metacircular evaluator
    in query interpreter
data-directed recursion
deadlock
    avoidance
    recovery
debug
decimal point in numbers
declarative vs. imperative knowledge, [2]
    logic programming and, [2]
    nondeterministic computing and
decode
decomposition of program into parts
deep binding
deep-reverse
deferred operations
define (special form)
    with dotted-tail notation
    environment model of
    lambda vs.
    for procedures, [2]
    syntactic sugar
    value of
    why a special form
define (special form)
    internal, see internal definition
define-variable!, [2]
definite integral
    estimated with Monte Carlo simulation, [2]
definition, see define; internal definition
definition-value
definition-variable
definition?
deKleer, Johan, [2]
delay (special form)
    explicit
    explicit vs. automatic
    implementation using lambda
    lazy evaluation and
    memoized, [2]
    why a special form
delay, in digital circuit
delay-it
delayed argument
delayed evaluation, [2]
    assignment and
    explicit vs. automatic
    in lazy evaluator
    normal-order evaluation and
    printing and
    streams and
delayed object
delete-queue!, [2]
denom, [2]
    axiom for
    reducing to lowest terms
dense polynomial
dependency-directed backtracking
deposit , with external serializer
deposit message for bank account
depth-first search
deque
deriv (numerical)
deriv (symbolic)
    data-directed
derivative of a function
derived expressions in evaluator
    adding to explicit-control evaluator
design, stratified
differential equation, see also solve
    second-order, [2]
differentiation
    numerical
    rules for, [2]
    symbolic, [2]
diffusion, simulation of
digital signal
digital-circuit simulation
    agenda
    agenda implementation
    primitive function boxes
    representing wires
    sample simulation
Dijkstra, Edsger Wybe
Dinesman, Howard P.
Diophantus's Arithmetic, Fermat's copy of
disjoin
dispatching
    comparing different styles
    on type, see also data-directed programming
display (primitive procedure), [2]
display-line
display-stream
distinct?
div (generic)
div-complex
div-interval
    division by zero
div-poly
div-rat
div-series
div-terms
divides?
divisible?
division of integers
dog, perfectly rational, behavior of
DOS/Windows
dot-product
dotted-tail notation
    for procedure parameters, [2]
    in query pattern, [2]
    in query-language rule
    read and
Doyle, Jon
draw-line
driver loop
    in explicit-control evaluator
    in lazy evaluator
    in metacircular evaluator
    in nondeterministic evaluator, [2]
    in query interpreter, [2]
driver-loop
    for lazy evaluator
    for metacircular evaluator
    for nondeterministic evaluator


e
    as continued fraction
    as solution to differential equation
ex, power series for
Earth, measuring circumference of
edge1-frame
edge2-frame
efficiency, see also order of growth, see also order of growth
    of compilation
    of data-base access
    of evaluation
    of Lisp
    of query processing
    of tree-recursive process
EIEIO
eight-queens puzzle, [2]
electrical circuits, modeled with streams, [2]
element-of-set?
    binary-tree representation
    ordered-list representation
    unordered-list representation
else (special symbol in cond)
embedded language, language design using
empty list
    denoted as '()
    recognizing with null?
empty stream
empty-agenda?, [2]
empty-arglist
empty-instruction-sequence
empty-queue?, [2]
empty-termlist?, [2]
encapsulated name
enclosing environment
enclosing-environment
encode
end-of-list marker
end-segment, [2]
end-with-linkage
engineering vs. mathematics
entry
enumerate-interval
enumerate-tree
enumerator
env register
environment, [2]
    compile-time, see compile-time environment
    as context for evaluation
    enclosing
    global, see global environment
    lexical scoping and
    in query interpreter
    renaming vs.
environment model of evaluation, [2]
    environment structure
    internal definitions
    local state
    message passing
    metacircular evaluator and
    procedure-application example
    rules for evaluation
    tail recursion and
eq? (primitive procedure)
    for arbitrary objects
    as equality of pointers, [2]
    implementation for symbols
    numerical equality and
equ? (generic predicate)
equal-rat?
equal?
equality
    in generic arithmetic system
    of lists
    of numbers, [2], [3]
    referential transparency and
    of symbols
equation, solving, see half-interval method; Newton's method; solve
Eratosthenes
error (primitive procedure)
error handling
    in compiled code
    in explicit-control evaluator, [2]
Escher, Maurits Cornelis
estimate-integral
estimate-pi, [2]
Euclid's Algorithm, [2], see also greatest common divisor
    order of growth
    for polynomials
Euclid's Elements
Euclid's proof of infinite number of primes
Euclidean ring
Euler, Leonhard
    proof of Fermat's Little Theorem
    series accelerator
euler-transform
ev-application
ev-assignment
ev-begin
ev-definition
ev-if
ev-lambda
ev-quoted
ev-self-eval
ev-sequence
    with tail recursion
    without tail recursion
ev-variable
eval (lazy)
eval (metacircular), [2]
    analyzing version
    data-directed
    primitive eval vs.
eval (primitive procedure)
    MIT Scheme
    used in query interpreter
eval-assignment
eval-definition
eval-dispatch
eval-if (lazy)
eval-if (metacircular)
eval-sequence
evaluation
    applicative-order, see applicative-order evaluation
    delayed, see delayed evaluation
    environment model of, see environment model of evaluation
    models of
    normal-order, see normal-order evaluation
    of a combination
    of and
    of cond
    of if
    of or
    of primitive expressions
    of special forms
    order of subexpression evaluation, see order of evaluation
    substitution model of, see substitution model of procedure application
evaluator, see also interpreter
    as abstract machine
    metacircular
    as universal machine
evaluators, see metacircular evaluator; analyzing evaluator; lazy evaluator; nondeterministic evaluator; query interpreter; explicit-control evaluator
even-fibs, [2]
even?
evening star, see Venus
event-driven simulation
evlis tail recursion
exact integer
exchange
exclamation point in names
execute
execute-application
    metacircular
    nondeterministic
execution procedure
    in analyzing evaluator
    in nondeterministic evaluator, [2], [3]
    in register-machine simulator, [2]
exp register
expand-clauses
explicit-control evaluator for Scheme
    assignments
    combinations
    compound procedures
    conditionals
    controller
    data paths
    definitions
    derived expressions
    driver loop
    error handling, [2]
    expressions with no subexpressions to evaluate
    as machine-language program
    machine model
    modified for compiled code
    monitoring performance (stack use)
    normal-order evaluation
    operand evaluation
    operations
    optimizations (additional)
    primitive procedures
    procedure application
    registers
    running
    sequences of expressions
    special forms (additional), [2]
    stack usage
    tail recursion, [2], [3]
    as universal machine
expmod, [2], [3]
exponential growth
    of tree-recursive Fibonacci-number computation
exponentiation
    modulo n
expression, see also compound expression; primitive expression
    algebraic, see algebraic expressions
    self-evaluating
    symbolic, see also symbol(s)
expression-oriented vs. imperative programming style
expt
    linear iterative version
    linear recursive version
    register machine for
extend-environment, [2]
extend-if-consistent
extend-if-possible
external-entry
extract-labels, [2]


#f
factorial, see also factorial
    infinite stream
    with letrec
    without letrec or define
factorial
    as an abstract machine
    compilation of, [2]
    environment structure in evaluating
    linear iterative version
    linear recursive version
    register machine for (iterative), [2]
    register machine for (recursive), [2]
    stack usage, compiled
    stack usage, interpreted, [2]
    stack usage, register machine
    with assignment
    with higher-order procedures
failure continuation (nondeterministic evaluator), [2]
    constructed by amb
    constructed by assignment
    constructed by driver loop
failure, in nondeterministic computation
    bug vs.
    searching and
false
false
false?
fast-expt
fast-prime?
feedback loop, modeled with streams
Feeley, Marc
Feigenbaum, Edward
Fenichel, Robert
Fermat, Pierre de
Fermat test for primality
    variant of
Fermat's Little Theorem
    alternate form
    proof
fermat-test
fetch-assertions
fetch-rules
fib
    linear iterative version
    logarithmic version
    register machine for (tree-recursive), [2]
    stack usage, compiled
    stack usage, interpreted
    tree-recursive version, [2]
    with memoization
    with named let
Fibonacci numbers, see also fib
    Euclid's GCD algorithm and
    infinite stream of, see fibs
fibs (infinite stream)
    implicit definition
FIFO buffer
filter, [2]
filter
filtered-accumulate
find-assertions
find-divisor
first-agenda-item, [2]
first-class elements in language
first-exp
first-frame
first-operand
first-segment
first-term, [2]
fixed point
    computing with calculator
    of cosine
    cube root as
    fourth root as
    golden ratio as
    as iterative improvement
    in Newton's method
    nth root as
    square root as, [2], [3]
    of transformed function
    unification and
fixed-length code
fixed-point
    as iterative improvement
fixed-point-of-transform
flag register
flatmap
flatten-stream
flip-horiz, [2]
flip-vert, [2]
flipped-pairs, [2], [3]
Floyd, Robert
fold-left
fold-right
for-each, [2]
for-each-except
Forbus, Kenneth D.
force, [2]
    forcing a thunk vs.
force a thunk
force-it
    memoized version
forget-value!, [2]
formal parameters
    names of
    scope of
formatting input expressions
Fortran, [2]
    inventor of
    restrictions on compound data
forwarding address
fourth root, as fixed point
fraction, see rational number(s)
frame (environment model)
    as repository of local state
    global
frame (picture language), [2]
    coordinate map
frame (query interpreter), see also pattern matching; unification
    representation
frame-coord-map
frame-values
frame-variables
framed-stack discipline
Franz Lisp
free register, [2]
free list
free variable
    capturing
    in internal definition
Friedman, Daniel P., [2]
fringe
    as a tree enumeration
front-ptr
front-queue, [2]
full-adder
    full-adder
function (mathematical)
     notation for
    Ackermann's
    composition of
    derivative of
    fixed point of
    procedure vs.
    rational
    repeated application of
    smoothing of
function box, in digital circuit
functional programming, [2]
    concurrency and
    functional programming languages
    time and


Gabriel, Richard P.
garbage collection
    memoization and
    mutation and
    tail recursion and
garbage collector
    compacting
    mark-sweep
    stop-and-copy
GCD, see greatest common divisor
gcd
    register machine for, [2]
gcd-terms
general-purpose computer, as universal machine
generate-huffman-tree
generating sentences
generic arithmetic operations
    structure of system
generic operation
generic procedure, [2]
    generic selector, [2]
Genesis
get, [2]
get-contents
get-global-environment
get-register
get-register-contents, [2]
get-signal, [2]
get-value, [2]
glitch
global environment, [2]
    in metacircular evaluator
global frame
Goguen, Joseph
golden ratio
    as continued fraction
    as fixed point
Gordon, Michael
goto (in register machine)
    label as destination
    simulating
goto-dest
grammar
graphics, see picture language
Gray, Jim
greatest common divisor, see also gcd
    generic
    of polynomials
    used to estimate
    used in rational-number arithmetic
Green, Cordell
Griss, Martin Lewis
Guttag, John Vogel


half-adder
    half-adder
    simulation of
half-interval method
    half-interval-method
    Newton's method vs.
halting problem
Halting Theorem
Hamming, Richard Wesley, [2]
Hanson, Christopher P., [2]
Hardy, Godfrey Harold, [2]
has-value?, [2]
Hassle
Havender, J.
Haynes, Christopher T.
headed list, [2]
Hearn, Anthony C.
Henderson, Peter, [2], [3]
    Henderson diagram
Heraclitus
Heron of Alexandria
Hewitt, Carl Eddie, [2], [3], [4]
hiding principle
hierarchical data structures, [2]
hierarchy of types
    in symbolic algebra
    inadequacy of
high-level language, machine language vs.
higher-order procedures
    in metacircular evaluator
    procedure as argument
    procedure as general method
    procedure as returned value
    strong typing and
Hilfinger, Paul
Hoare, Charles Antony Richard
Hodges, Andrew
Hofstadter, Douglas R.
Horner, W. G.
Horner's rule
``how to'' vs. ``what is'' description, see imperative vs. declarative knowledge
Huffman code
    optimality of
    order of growth of encoding
Huffman, David
Hughes, R. J. M.


IBM 704
identity
if (special form)
    cond vs.
    evaluation of
    normal-order evaluation of
    one-armed (without alternative)
    predicate, consequent, and alternative of
    why a special form
if-alternative
if-consequent
if-predicate
if?
imag-part
    data-directed
    polar representation
    rectangular representation
    with tagged data
imag-part-polar
imag-part-rectangular
imperative programming
imperative vs. declarative knowledge, [2]
    logic programming and, [2]
    nondeterministic computing and
imperative vs. expression-oriented programming style
implementation dependencies, see also unspecified values
    numbers
    order of subexpression evaluation
inc
incremental development of programs
indeterminate of a polynomial
indexing a data base, [2]
inference, method of
infinite series
infinite stream(s)
    merging, [2], [3], [4]
    merging as a relation
    of factorials
    of Fibonacci numbers, see fibs
    of integers, see integers
    of pairs
    of prime numbers, see primes
    of random numbers
    representing power series
    to model signals
    to sum a series
infix notation, prefix notation vs.
inform-about-no-value
inform-about-value
information retrieval, see data base
Ingerman, Peter
initialize-stack operation in register machine, [2]
insert!
    in one-dimensional table
    in two-dimensional table
insert-queue!, [2]
install-complex-package
install-polar-package
install-polynomial-package
install-rational-package
install-rectangular-package
install-scheme-number-package
instantiate
instantiate a pattern
instruction counting
instruction execution procedure
instruction sequence, [2]
instruction tracing
instruction-execution-proc
instruction-text
integer(s)
    dividing
    exact
integerizing factor
integers (infinite stream)
    implicit definition
    lazy-list version
integers-starting-from
integral, see also definite integral; Monte Carlo integration
    of a power series
integral, [2], [3]
    with delayed argument
    with lambda
    lazy-list version
    need for delayed evaluation
integrate-series
integrated-circuit implementation of Scheme, [2]
integrator, for signals
interleave
interleave-delayed
Interlisp
internal definition
    in environment model
    free variable in
    let vs.
    in nondeterministic evaluator
    position of
    restrictions on
    scanning out
    scope of name
Internet ``Worm''
interning symbols
interpreter, see also evaluator
    compiler vs., [2]
    read-eval-print loop
intersection-set
    binary-tree representation
    ordered-list representation
    unordered-list representation
interval arithmetic
invariant quantity of an iterative process
inverter
    inverter
iteration contructs, see looping constructs
iterative improvement
iterative process
    as a stream process
    design of algorithm
    implemented by procedure call, [2], [3], see also tail recursion
    linear, [2]
    recursive process vs., [2], [3], [4]
    register machine for


Jayaraman, Sundaresan


Kaldewaij, Anne
Karr, Alphonse
Kepler, Johannes
key
key of a record
    in a data base
    in a table
    testing equality of
Khayyam, Omar
Knuth, Donald E., [2], [3], [4], [5], [6], [7]
Kohlbecker, Eugene Edmund, Jr.
Kolmogorov, A. N.
Konopasek, Milos
Kowalski, Robert
KRC, [2]


label (in register machine)
    simulating
label-exp
label-exp-label
Lagrange interpolation formula
calculus (lambda calculus)
lambda (special form)
    define vs.
    with dotted-tail notation
lambda expression
    as operator of combination
    value of
lambda-body
lambda-parameters
lambda?
Lambert, J.H.
Lamé, Gabriel
Lamé's Theorem
Lamport, Leslie
Lampson, Butler
Landin, Peter, [2]
language, see natural language; programming language
Lapalme, Guy
last-exp?
last-operand?
last-pair, [2]
    rules
lazy evaluation
lazy evaluator
lazy list
lazy pair
lazy tree
leaf?
least commitment, principle of
lecture, something to do during
left-branch, [2]
Leibniz, Baron Gottfried Wilhelm von
    proof of Fermat's Little Theorem
    series for , [2]
Leiserson, Charles E., [2]
length
    as accumulation
    iterative version
    recursive version
let (special form)
    evaluation model
    internal definition vs.
    named
    scope of variables
    as syntactic sugar, [2]
let* (special form)
letrec (special form)
lexical addressing
    lexical address
lexical scoping
    environment structure and
lexical-address-lookup, [2]
lexical-address-set!, [2]
Lieberman, Henry
LIFO buffer, see stack
line segment
    represented as pair of points
    represented as pair of vectors
linear growth, [2]
linear iterative process
    order of growth
linear recursive process
    order of growth
linkage descriptor
Liskov, Barbara Huberman
Lisp
    acronym for LISt Processing
    applicative-order evaluation in
    on DEC PDP-1
    efficiency of, [2]
    first-class procedures in
    Fortran vs.
    history of
    internal type system
    original implementation on IBM 704
    Pascal vs.
    suitability for writing evaluators
    unique features of
Lisp dialects
    Common Lisp
    Franz Lisp
    Interlisp
    MacLisp
    MDL
    Portable Standard Lisp
    Scheme
    Zetalisp
lisp-value (query interpreter)
lisp-value (query language), [2]
    evaluation of, [2], [3]
list (primitive procedure)
list structure
    list vs.
    mutable
    represented using vectors
list(s)
    backquote with
    cdring down
    combining with append
    consing up
    converting a binary tree to a
    converting to a binary tree
    empty, see empty list
    equality of
    headed, [2]
    last pair of
    lazy
    length of
    list structure vs.
    manipulation with car, cdr, and cons
    mapping over
    nth element of
    operations on
    printed representation of
    quotation of
    reversing
    techniques for manipulating
list->tree
list-difference
list-of-arg-values
list-of-delayed-args
list-of-values
list-ref, [2]
list-structured memory
list-union
lives-near (rule), [2]
local evolution of a process
local name, [2]
local state
    maintained in frames
local state variable
local variable
location
Locke, John
log (primitive procedure)
logarithm, approximating ln 2
logarithmic growth, [2], [3]
logic programming, see also query language; query interpreter
    computers for
    history of, [2]
    in Japan
    logic programming languages
    mathematical logic vs.
logic puzzles
logical and
logical or
logical-not
lookup
    in one-dimensional table
    in set of records
    in two-dimensional table
lookup-label
lookup-prim
lookup-variable-value, [2]
    for scanned-out definitions
looping constructs, [2]
    implementing in metacircular evaluator
lower-bound


machine language
    high-level language vs.
Macintosh
MacLisp
macro, see also reader macro character
magician, see numerical analyst
magnitude
    data-directed
    polar representation
    rectangular representation
    with tagged data
magnitude-polar
magnitude-rectangular
make-account
    in environment model
    with serialization, [2], [3]
make-account-and-serializer
make-accumulator
make-agenda, [2]
make-assign
make-begin
make-branch
make-center-percent
make-center-width
make-code-tree
make-compiled-procedure
make-complex-from-mag-ang
make-complex-from-real-imag
make-connector
make-cycle
make-decrementer
make-execution-procedure
make-frame, [2], [3]
make-from-mag-ang, [2]
    message-passing
    polar representation
    rectangular representation
make-from-mag-ang-polar
make-from-mag-ang-rectangular
make-from-real-imag, [2]
    message-passing
    polar representation
    rectangular representation
make-from-real-imag-polar
make-from-real-imag-rectangular
make-goto
make-if
make-instruction
make-instruction-sequence
make-interval, [2]
make-joint
make-label
make-label-entry
make-lambda
make-leaf
make-leaf-set
make-machine, [2]
make-monitored
make-mutex
make-new-machine
make-operation-exp
make-perform
make-point
make-poly
make-polynomial
make-primitive-exp
make-procedure
make-product, [2]
make-queue, [2]
make-rat, [2], [3]
    axiom for
    reducing to lowest terms
make-rational
make-register
make-restore
make-save
make-scheme-number
make-segment, [2]
make-serializer
make-simplified-withdraw, [2]
make-stack
    with monitored stack
make-sum, [2]
make-table
    message-passing implementation
    one-dimensional table
make-tableau
make-term, [2]
make-test
make-time-segment
make-tree
make-vect
make-wire, [2], [3]
make-withdraw
    in environment model
    using let
making change, see counting change
map, [2]
    as accumulation
    with multiple arguments
map-over-symbols
map-successive-pairs
mapping
    over lists
    nested, [2]
    as a transducer
    over trees
mark-sweep garbage collector
mathematical function, see function (mathematical)
mathematics
    computer science vs., [2]
    engineering vs.
matrix, represented as sequence
matrix-*-matrix
matrix-*-vector
max (primitive procedure)
McAllester, David Allen, [2]
McCarthy, John, [2], [3], [4]
McDermott, Drew
MDL
means of abstraction
    define
means of combination, see also closure
measure in a Euclidean ring
member
memo-fib
memo-proc
memoization, [2]
    call-by-need and
    by delay
    garbage collection and
    of thunks
memoize
memory
    in 1964
    list-structured
memq
merge
merge-weighted
merging infinite streams, see infinite stream(s)
message passing, [2]
    environment model and
    in bank account
    in digital-circuit simulation
    tail recursion and
metacircular evaluator
metacircular evaluator for Scheme
    analyzing version
    combinations (procedure applications)
    compilation of, [2]
    data abstraction in, [2], [3], [4]
    data-directed eval
    derived expressions
    driver loop
    efficiency of
    environment model of evaluation in
    environment operations
    eval and apply
    eval-apply cycle, [2]
    expression representation, [2]
    global environment
    higher-order procedures in
    implemented language vs. implementation language
    job of
    order of operand evaluation
    primitive procedures
    representation of environments
    representation of procedures
    representation of true and false
    running
    special forms (additional), [2], [3], [4], [5], [6]
    special forms as derived expressions
    symbolic differentiation and
    syntax of evaluated language, [2], [3]
    tail recursiveness unspecified in
    true and false
metalinguistic abstraction
MicroPlanner
Microshaft
midpoint-segment
Miller, Gary L.
Miller, James S.
Miller-Rabin test for primality
Milner, Robin
min (primitive procedure)
Minsky, Marvin Lee, [2]
Miranda
MIT
    Artificial Intelligence Laboratory
    early history of
    Project MAC
    Research Laboratory of Electronics, [2]
MIT Scheme
    the empty stream
    eval
    internal definitions
    numbers
    random
    user-initial-environment
    without-interrupts
ML
mobile
modeling
    as a design strategy
    in science and engineering
models of evaluation
modified registers, see instruction sequence
modifies-register?
modularity, [2]
    along object boundaries
    functional programs vs. objects
    hiding principle
    streams and
    through dispatching on type
    through infinite streams
    through modeling with objects
modulo n
modus ponens
money, changing, see counting change
monitored procedure
Monte Carlo integration
    stream formulation
Monte Carlo simulation
    stream formulation
monte-carlo
    infinite stream
Moon, David A., [2]
morning star, see evening star
Morris, J. H.
Morse code
Mouse, Minnie and Mickey
mul (generic)
    used for polynomial coefficients
mul-complex
mul-interval
    more efficient version
mul-poly
mul-rat
mul-series
mul-streams
mul-terms
Multics time-sharing system
multiple-dwelling
multiplicand
multiplication by Russian peasant method
multiplier
    primitive constraint
    selector
Munro, Ian
mutable data objects, see also queue; table
    implemented with assignment
    list structure
    pairs
    procedural representation of
    shared data
mutator
mutex
mutual exclusion
mystery


name, see also local name; variable; local variable
    encapsulated
    of a formal parameter
    of a procedure
named let (special form)
naming
    of computational objects
    of procedures
naming conventions
    ! for assignment and mutation
    ? for predicates
native language of machine
natural language
    parsing, see parsing natural language
    quotation in
needed registers, see instruction sequence
needs-register?
negate
nested applications of car and cdr
nested combinations
nested definitions, see internal definition
nested mappings, see mapping
new register
new-cars register
new-cdrs register
new-withdraw
newline (primitive procedure), [2]
Newton's method
    for cube roots
    for differentiable functions
    half-interval method vs.
    for square roots, [2], [3]
newton-transform
newtons-method
next (linkage descriptor)
next-to (rules)
nil
    dispensing with
    as empty list
    as end-of-list marker
    as ordinary variable in Scheme
no-more-exps?
no-operands?
node of a tree
non-computable
non-strict
nondeterminism, in behavior of concurrent programs, [2]
nondeterministic choice point
nondeterministic computing
nondeterministic evaluator
    order of operand evaluation
nondeterministic programming vs. Scheme programming, [2], [3], [4]
nondeterministic programs
    logic puzzles
    pairs with prime sums
    parsing natural language
    Pythagorean triples, [2], [3]
normal-order evaluation
    applicative order vs., [2], [3]
    delayed evaluation and
    in explicit-control evaluator
    of if
normal-order evaluator, see lazy evaluator
not (primitive procedure)
not (query language), [2]
    evaluation of, [2], [3]
notation in this book
    italic symbols in expression syntax
    slanted characters for interpreter response
nouns
nth root, as fixed point
null? (primitive procedure)
    implemented with typed pointers
number theory
number(s)
    comparison of
    decimal point in
    equality of, [2], [3]
    in generic arithmetic system
    implementation dependencies
    integer vs. real number
    integer, exact
    in Lisp
    rational number
number? (primitive procedure)
    data types and
    implemented with typed pointers
numer, [2]
    axiom for
    reducing to lowest terms
numerical analysis
numerical analyst
numerical data


obarray
object program
object(s)
    benefits of modeling with
    with time-varying state
object-oriented programming languages
old register
oldcr register
ones (infinite stream)
    lazy-list version
op (in register machine)
    simulating
open coding of primitives, [2]
operands
operands of a combination
operation
    cross-type
    generic
    in register machine
operation-and-type table
    assignment needed for
    implementing
operation-exp
operation-exp-op
operation-exp-operands
operator
operator of a combination
    combination as
    compound expression as
    lambda expression as
optimality
    of Horner's rule
    of Huffman code
or (query language)
    evaluation of, [2]
or (special form)
    evaluation of
    why a special form
    with no subexpressions
or-gate
    or-gate, [2]
order, [2]
order notation
order of evaluation
    assignment and
    implementation-dependent
    in compiler
    in explicit-control evaluator
    in metacircular evaluator
    in Scheme
order of events
    decoupling apparent from actual
    indeterminacy in concurrent systems
order of growth
    linear iterative process
    linear recursive process
    logarithmic
    tree-recursive process
order of subexpression evaluation, see order of evaluation
ordered-list representation of sets
ordinary numbers (in generic arithmetic system)
origin-frame
Ostrowski, A. M.
outranked-by (rule), [2]


P operation on semaphore
package
    complex-number
    polar representation
    polynomial
    rational-number
    rectangular representation
    Scheme-number
painter(s)
    higher-order operations
    operations
    represented as procedures
    transforming and combining
pair(s)
    axiomatic definition of
    box-and-pointer notation for
    infinite stream of
    lazy
    mutable
    procedural representation of, [2], [3]
    represented using vectors
    used to represent sequence
    used to represent tree
pair? (primitive procedure)
    implemented with typed pointers
pairs
Pan, V. Y.
parallel-execute
parallel-instruction-sequences
parallelism, see concurrency
parameter, see formal parameters
parameter passing, see call-by-name argument passing; call-by-need argument passing
parentheses
    delimiting combination
    delimiting cond clauses
    in procedure definition
parse
parse-...
parsing natural language
    real language understanding vs. toy parser
partial-sums
Pascal
    lack of higher-order procedures
    recursive procedures
    restrictions on compound data
    weakness in handling compound objects
Pascal, Blaise
Pascal's triangle
password-protected bank account
pattern
pattern matching
    implementation
    unification vs., [2]
pattern variable
    representation of, [2]
pattern-match
pc register
perform (in register machine)
    simulating
perform-action
Perlis, Alan J., [2]
    quips, [2]
permutations of a set
    permutations
Phillips, Hubert
(pi)
    approximation with half-interval method
    approximation with Monte Carlo integration, [2]
    Cesàro estimate for, [2]
    Leibniz's series for, [2]
    stream of approximations
    Wallis's formula for
pi-stream
pi-sum
    with higher-order procedures
    with lambda
picture language
Pingala, Áchárya
pipelining
Pitman, Kent M.
Planner
point, represented as a pair
pointer
    in box-and-pointer notation
    typed
polar package
polar?
poly
polynomial package
polynomial arithmetic
    addition
    division
    Euclid's Algorithm
    greatest common divisor, [2]
    interfaced to generic arithmetic system
    multiplication
    probabilistic algorithm for GCD
    rational functions
    subtraction
polynomial(s)
    canonical form
    dense
    evaluating with Horner's rule
    hierarchy of types
    indeterminate of
    sparse
    univariate
pop
Portable Standard Lisp
porting a language
power series, as stream
    adding
    dividing
    integrating
    multiplying
PowerPC
predicate
    of cond clause
    of if
    naming convention for
prefix code
prefix notation
    infix notation vs.
prepositions
preserving, [2], [3], [4]
pretty-printing
prime number(s)
    cryptography and
    Eratosthenes's sieve for
    Fermat test for
    infinite stream of, see primes
    Miller-Rabin test for
    testing for
prime-sum-pair
prime-sum-pairs
    infinite stream
prime?, [2]
primes (infinite stream)
    implicit definition
primitive constraints
primitive expression
    evaluation of
    name of primitive procedure
    name of variable
    number
primitive procedures (those marked ns are not in the IEEE Scheme standard)
    *
    +
    -, [2]
    /
    <
    =
    >
    apply
    atan
    car
    cdr
    cons
    cos
    display
    eq?
    error (ns)
    eval (ns)
    list
    log
    max
    min
    newline
    not
    null?
    number?
    pair?
    quotient
    random (ns), [2]
    read
    remainder
    round
    runtime (ns)
    set-car!
    set-cdr!
    sin
    symbol?
    vector-ref
    vector-set!
primitive query, see simple query
primitive-apply
primitive-implementation
primitive-procedure-names
primitive-procedure-objects
primitive-procedure?, [2]
principle of least commitment
print operation in register machine
print-point
print-queue
print-rat
print-result
    monitored-stack version
print-stack-statistics operation in register machine
printing, primitives for
probabilistic algorithm, [2], [3]
probe
    in constraint system
    in digital-circuit simulator
proc register
procedural abstraction
procedural representation of data
    mutable data
procedure, [2]
    anonymous
    arbitrary number of arguments, [2]
    as argument
    as black box
    body of
    compound
    creating with define
    creating with lambda, [2], [3]
    as data
    definition of
    first-class in Lisp
    formal parameters of
    as general method
    generic, [2]
    higher-order, see higher-order procedure
    implicit begin in body of
    mathematical function vs.
    memoized
    monitored
    name of
    naming (with define)
    as pattern for local evolution of a process
    as returned value
    returning multiple values
    scope of formal parameters
    special form vs., [2]
procedure application
    combination denoting
    environment model of
    substitution model of, see substitution model of procedure application
procedure-body
procedure-environment
procedure-parameters
process
    iterative
    linear iterative
    linear recursive
    local evolution of
    order of growth of
    recursive
    resources required by
    shape of
    tree-recursive
product
    as accumulation
product?
program
    as abstract machine
    comments in
    as data
    incremental development of
    structure of, [2], [3], see also abstraction barriers
    structured with subroutines
program counter
programming
    data-directed, see data-directed programming
    demand-driven
    elements of
    functional, see functional programming
    imperative
    odious style
programming language
    design of
    functional
    logic
    object-oriented
    strongly typed
    very high-level
Prolog, [2]
prompt-for-input
prompts
    explicit-control evaluator
    lazy evaluator
    metacircular evaluator
    nondeterministic evaluator
    query interpreter
propagate
propagation of constraints
proving programs correct
pseudo-random sequence
pseudodivision of polynomials
pseudoremainder of polynomials
push
put, [2]
puzzles
    eight-queens puzzle, [2]
    logic puzzles
Pythagorean triples
    with nondeterministic programs, [2], [3]
    with streams


qeval, [2]
quantum mechanics
quasiquote
queens
query, see also simple query; compound query
query interpreter
    adding rule or assertion
    compound query, see compound query
    data base
    driver loop, [2]
    environment structure in
    frame, [2]
    improvements to, [2], [3]
    infinite loops, [2]
    instantiation
    Lisp interpreter vs., [2], [3]
    overview
    pattern matching, [2]
    pattern-variable representation, [2]
    problems with not and lisp-value, [2]
    query evaluator, [2]
    rule, see rule
    simple query, see simple query
    stream operations
    streams of frames, [2]
    syntax of query language
    unification, [2]
query language, [2]
    abstraction in
    compound query, see compound query
    data base
    equality testing in
    extensions to, [2]
    logical deductions
    mathematical logic vs.
    rule, see rule
    simple query, see simple query
query-driver-loop
question mark, in predicate names
queue
    double-ended
    front of
    operations on
    procedural implementation of
    rear of
    in simulation agenda
quotation
    of character strings
    of Lisp data objects
    in natural language
quotation mark, single vs. double
quote (special form)
    read and, [2]
quoted?
quotient (primitive procedure)


Rabin, Michael O.
radicand
Ramanujan numbers
Ramanujan, Srinivasa
rand
    with reset
random (primitive procedure)
    assignment needed for
    MIT Scheme
random-in-range
random-number generator, [2]
    in Monte Carlo simulation
    in primality testing
    with reset
    with reset, stream version
random-numbers (infinite stream)
Raphael, Bertram
rational package
rational function
    reducing to lowest terms
rational number(s)
    arithmetic operations on
    in MIT Scheme
    printing
    reducing to lowest terms, [2]
    represented as pairs
rational-number arithmetic
    interfaced to generic arithmetic system
    need for compound data
Raymond, Eric, [2]
RC circuit
read (primitive procedure)
    dotted-tail notation handling by
    macro characters
read operation in register machine
read-eval-print loop, see also driver loop
read-eval-print-loop
reader macro character
real number
real-part
    data-directed
    polar representation
    rectangular representation
    with tagged data
real-part-polar
real-part-rectangular
rear-ptr
receive procedure
record, in a data base
rectangle, representing
rectangular package
rectangular?
recursion
    data-directed
    expressing complicated process
    in rules
    in working with trees
recursion equations
recursion theory
recursive procedure
    recursive procedure definition
    recursive process vs.
    specifying without define
recursive process
    iterative process vs., [2], [3], [4]
    linear, [2]
    recursive procedure vs.
    register machine for
    tree, [2]
red-black tree
reducing to lowest terms, [2], [3]
Rees, Jonathan A., [2]
referential transparency
reg (in register machine)
    simulating
register machine
    actions
    controller
    controller diagram
    data paths
    data-path diagram
    design of
    language for describing
    monitoring performance
    simulator
    stack
    subroutine
    test operation
register table, in simulator
register(s)
    representing
    tracing
register-exp
register-exp-reg
register-machine language
    assign, [2]
    branch, [2]
    const, [2], [3]
    entry point
    goto, [2]
    instructions, [2]
    label
    label, [2]
    op, [2]
    perform, [2]
    reg, [2]
    restore, [2]
    save, [2]
    test, [2]
register-machine simulator
registers-modified
registers-needed
relations, computing in terms of, [2]
relatively prime
relativity, theory of
release a mutex
remainder (primitive procedure)
remainder modulo n
remainder-terms
remove
remove-first-agenda-item!, [2]
require
    as a special form
reserved words, [2]
resistance
    formula for parallel resistors, [2]
    tolerance of resistors
resolution principle
resolution, Horn-clause
rest-exps
rest-operands
rest-segments
rest-terms, [2]
restore (in register machine), [2]
    implementing
    simulating
return (linkage descriptor)
returning multiple values
Reuter, Andreas
reverse
    as folding
    rules
Rhind Papyrus
right-branch, [2]
right-split
ripple-carry adder
Rivest, Ronald L., [2]
RLC circuit
Robinson, J. A.
robustness
rock songs, 1950s
Rogers, William Barton
root register
roots of equation, see half-interval method; Newton's method
rotate90
round (primitive procedure)
roundoff error, [2]
Rozas, Guillermo Juan
RSA algorithm
rule (query language)
    applying, [2], [3]
    without body, [2], [3]
Runkle, John Daniel
runtime (primitive procedure)
Russian peasant method of multiplication


same (rule)
same-variable?, [2]
sameness and change
    meaning of
    shared data and
satisfy a compound query
satisfy a pattern (simple query)
save (in register machine), [2]
    implementing
    simulating
scale-list, [2], [3]
scale-stream
scale-tree, [2]
scale-vect
scan register
scan-out-defines
scanning out internal definitions
    in compiler, [2]
Scheme
    history of
Scheme chip, [2]
scheme-number package
scheme-number->complex
scheme-number->scheme-number
Schmidt, Eric
scope of a variable, see also lexical scoping
    internal define
    in let
    procedure's formal parameters
search
    of binary tree
    depth-first
    systematic
search
secretary, importance of
segment-queue
segment-time
segments
segments->painter
selector
    as abstraction barrier
    generic, [2]
self-evaluating expression
self-evaluating?
semaphore
    of size n
semicolon
    comment introduced by
separator code
sequence accelerator
sequence of expressions
    in consequent of cond
    in procedure body
sequence(s)
    as conventional interface
    as source of modularity
    operations on
    represented by pairs
sequence->exp
serialized-exchange
    with deadlock avoidance
serializer
    implementing
    with multiple shared resources
series, summation of
    accelerating sequence of approximations
    with streams
set
    set
        
(special form), see also assignment
    data base as
    operations on
    permutations of
    represented as binary tree
    represented as ordered list
    represented as unordered list
    subsets of
set! (special form)
    environment model of
    value of
set-car! (primitive procedure)
    implemented with vectors
    procedural implementation of
    value of
set-cdr! (primitive procedure)
    implemented with vectors
    procedural implementation of
    value of
set-contents!
set-current-time!
set-front-ptr!
set-instruction-execution-proc!
set-rear-ptr!
set-register-contents!, [2]
set-segments!
set-signal!, [2]
set-value!, [2]
set-variable-value!, [2]
setup-environment
shadow a binding
Shamir, Adi
shape of a process
shared data
shared resources
shared state
shrink-to-upper-right
Shrobe, Howard E.
side-effect bug
sieve of Eratosthenes
    sieve
sum (sigma) notation
signal processing
    smoothing a function
    smoothing a signal, [2]
    stream model of
    zero crossings of a signal, [2], [3]
signal, digital
signal-error
signal-flow diagram, [2]
signal-processing view of computation
simple query
    processing, [2], [3], [4]
simple-query
simplification of algebraic expressions
Simpson's Rule for numerical integration
simulation
    of digital circuit, see digital-circuit simulation
    event-driven
    as machine-design tool
    for monitoring performance of register machine
    Monte Carlo, see Monte Carlo simulation
    of register machine, see register-machine simulator
sin (primitive procedure)
sine
    approximation for small angle
    power series for
singleton-stream
SKETCHPAD
smallest-divisor
    more efficient version
Smalltalk
smoothing a function
smoothing a signal, [2]
snarf
Solar System's chaotic dynamics
Solomonoff, Ray
solve differential equation, [2]
    lazy-list version
    with scanned-out definitions
solving equation, see half-interval method; Newton's method; solve
source language
source program
Spafford, Eugene H.
sparse polynomial
special form
    as derived expression in evaluator
    need for
    procedure vs., [2]
special forms (those marked ns are not in the IEEE Scheme standard)
    and
    begin
    cond
    cons-stream (ns)
    define, [2]
    delay (ns)
    if
    lambda
    let
    let*
    letrec
    named let
    or
    quote
    set!
split
sqrt
    block structured
    in environment model
    as fixed point, [2], [3], [4]
    as iterative improvement
    with Newton's method, [2]
    register machine for
    as stream limit
sqrt-stream
square
    in environment model
square root, see also sqrt
    stream of approximations
square-limit, [2]
square-of-four
squarer (constraint), [2]
squash-inwards
stack
    framed
    for recursion in register machine
    representing, [2]
stack allocation and tail recursion
stack-inst-reg-name
Stallman, Richard M., [2]
start register machine, [2]
start-eceval
start-segment, [2]
state
    local, see local state
    shared
    vanishes in stream formulation
state variable, [2]
    local
statements, see instruction sequence
statements
Steele, Guy Lewis Jr., [2], [3], [4], [5], [6]
stop-and-copy garbage collector
Stoy, Joseph E., [2], [3]
Strachey, Christopher
stratified design
stream(s), [2]
    delayed evaluation and
    empty
    implemented as delayed lists
    implemented as lazy lists
    implicit definition
    infinite, see infinite streams
    used in query interpreter, [2]
stream-append
stream-append-delayed
stream-car, [2]
stream-cdr, [2]
stream-enumerate-interval
stream-filter
stream-flatmap, [2]
stream-for-each
stream-limit
stream-map
    with multiple arguments
stream-null?
    in MIT Scheme
stream-ref
stream-withdraw
strict
string, see character string
strongly typed language
sub (generic)
sub-complex
sub-interval
sub-rat
sub-vect
subroutine in register machine
subsets of a set
substitution model of procedure application, [2]
    inadequacy of
    shape of process
subtype
    multiple
success continuation (nondeterministic evaluator), [2]
successive squaring
sum
    as accumulation
    iterative version
sum-cubes
    with higher-order procedures
sum-integers
    with higher-order procedures
sum-odd-squares, [2]
sum-of-squares
    in environment model
sum-primes, [2]
sum?
summation of a series
    with streams
supertype
    multiple
Sussman, Gerald Jay, [2], [3], [4], [5], [6], [7]
Sussman, Julie Esther Mazel, nieces of
Sutherland, Ivan
symbol(s)
    equality of
    interning
    quotation of
    representation of
    uniqueness of
symbol-leaf
symbol? (primitive procedure)
    data types and
    implemented with typed pointers
symbolic algebra
symbolic differentiation, [2]
symbolic expression, see also symbol(s)
symbols
SYNC
synchronization, see concurrency
syntactic analysis, separated from execution
    in metacircular evaluator
    in register-machine simulator, [2]
syntactic sugar
    define
    let as
    looping constructs as
    procedure vs. data as
syntax, see also special forms
    abstract, see abstract syntax
    of expressions, describing
    of a programming language
syntax interface
systematic search


#t
table
    backbone of
    for coercion
    for data-directed programming
    local
    n-dimensional
    one-dimensional
    operation-and-type, see operation-and-type table
    represented as binary tree vs. unordered list
    testing equality of keys
    two-dimensional
    used in simulation agenda
    used to store computed values
tableau
tabulation, [2]
tack-on-instruction-sequence
tagged architecture
tagged data, [2]
tagged-list?
tail recursion
    compiler and
    environment model of evaluation and
    explicit-control evaluator and, [2], [3]
    garbage collection and
    metacircular evaluator and
    in Scheme
tail-recursive evaluator
tangent
    as continued fraction
    power series for
target register
Technological University of Eindhoven
Teitelman, Warren
term list of polynomial
    representing
term-list
terminal node of a tree
test (in register machine)
    simulating
test operation in register machine
test-and-set!, [2]
test-condition
text-of-quotation
Thatcher, James W.
THE Multiprogramming System
the-cars
    register, [2]
    vector
the-cdrs
    register, [2]
    vector
the-empty-stream
    in MIT Scheme
the-empty-termlist, [2]
the-global-environment, [2]
theorem proving (automatic)
(f(n)) (theta of f(n))
thunk
    call-by-name
    call-by-need
    forcing
    implementation of
    origin of name
time
    assignment and
    communication and
    in concurrent systems
    functional programming and
    in nondeterministic computing, [2]
    purpose of
time segment, in agenda
time slicing
timed-prime-test
timing diagram
TK!Solver
tower of types
tracing
    instruction execution
    register assignment
transform-painter
transparency, referential
transpose a matrix
tree
    B-tree
    binary, see also binary tree
    combination viewed as
    counting leaves of
    enumerating leaves of
    fringe of
    Huffman
    lazy
    mapping over
    red-black
    represented as pairs
    reversing at all levels
tree accumulation
tree->list...
tree-map
tree-recursive process
    order of growth
trigonometric relations
true
true
true?
truncation error
truth maintenance
try-again
Turing machine
Turing, Alan M., [2]
Turner, David, [2], [3]
type field
type tag, [2]
    two-level
type(s)
    cross-type operations
    dispatching on
    hierarchy in symbolic algebra
    hierarchy of
    lowering, [2]
    multiple subtype and supertype
    raising, [2]
    subtype
    supertype
    tower of
type-inferencing mechanism
type-tag
    using Scheme data types
typed pointer
typing input expressions


unbound variable
unev register
unification
    discovery of algorithm
    implementation
    pattern matching vs., [2]
unify-match
union-set
    binary-tree representation
    ordered-list representation
    unordered-list representation
unique (query language)
unique-pairs
unit square
univariate polynomial
universal machine
    explicit-control evaluator as
    general-purpose computer as
University of California at Berkeley
University of Edinburgh
University of Marseille
UNIX, [2]
unknown-expression-type
unknown-procedure-type
unordered-list representation of sets
unspecified values
    define
    display
    if without alternative
    newline
    set!
    set-car!
    set-cdr!
up-split
update-insts!
upper-bound
upward compatibility
user-initial-environment (MIT Scheme)
user-print
    modified for compiled code


V operation on semaphore
val register
value
    of a combination
    of an expression, see also unspecified values
value-proc
variable, see also local variable
    bound
    free
    scope of, see also scope of a variable
    unbound
    value of, [2]
variable
variable-length code
variable?, [2]
vector (data structure)
vector (mathematical)
    operations on, [2]
    in picture-language frame
    represented as pair
    represented as sequence
vector-ref (primitive procedure)
vector-set! (primitive procedure)
Venus
verbs
very high-level language


Wadler, Philip
Wadsworth, Christopher
Wagner, Eric G.
Walker, Francis Amasa
Wallis, John
Wand, Mitchell, [2]
Waters, Richard C.
weight
weight-leaf
Weyl, Hermann
``what is'' vs. ``how to'' description, see declarative vs. imperative knowledge
wheel (rule), [2]
width
width of an interval
Wilde, Oscar (Perlis's paraphrase of)
Wiles, Andrew
Winograd, Terry
Winston, Patrick Henry, [2]
wire, in digital circuit
Wisdom, Jack
Wise, David S.
wishful thinking, [2]
withdraw
    problems in concurrent system
without-interrupts
world line of a particle, [2]
Wright, E. M.
Wright, Jesse B.


xcor-vect
Xerox Palo Alto Research Center, [2]


Y operator
ycor-vect
Yochelson, Jerome C.


Zabih, Ramin
zero crossings of a signal, [2], [3]
zero test (generic)
    for polynomials
Zetalisp
Zilles, Stephen N.
Zippel, Richard E.