about summary refs log tree commit diff stats
path: root/termbox/termbox.h
Commit message (Expand)AuthorAgeFilesLines
* 3862Kartik K. Agaram2017-05-191-4/+4
* 3860 - stop buffering the screen in termboxKartik K. Agaram2017-05-181-23/+4
* 3858Kartik K. Agaram2017-05-131-5/+1
* 3857Kartik K. Agaram2017-05-131-3/+0
* 3854Kartik K. Agaram2017-05-131-5/+31
* 3842Kartik K. Agaram2017-05-041-3/+0
* 3824 - experiment: stop buffering in termboxKartik K. Agaram2017-04-161-28/+5
* 3711Kartik K. Agaram2016-12-261-4/+0
* 2572Kartik K. Agaram2016-01-191-1/+1
* 2181 - detect shift-tabKartik K. Agaram2015-09-111-5/+4
* 2132 - support for ctrl + arrow keysKartik K. Agaram2015-09-021-2/+6
* 2113 - stop updating entire screen on tb_present()Kartik K. Agaram2015-08-291-0/+3
* 1964 - don't mess up pasteKartik K. Agaram2015-08-091-0/+2
* 1731 - ah, now fully responsiveKartik K. Agaram2015-07-081-0/+2
* 1573Kartik K. Agaram2015-06-161-0/+1
* 1530 - switch to termbox's 256-color modeKartik K. Agaram2015-06-051-12/+5
* 1486 - repl: hitting enter now workingKartik K. Agaram2015-05-271-0/+2
* 1368 - alias carriage-return and newlineKartik K. Agaram2015-05-141-0/+3
* 1314Kartik K. Agaram2015-05-091-1/+2
* 1276 - make C++ version the defaultKartik K. Agaram2015-05-051-0/+210
215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433
<P>

<P>

<HTML>
<HEAD>
<TITLE>Simply Scheme: Glossary</TITLE>
</HEAD>
<BODY>
<CITE>Simply Scheme</CITE>:
<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
<H1>Glossary</H1>

<TABLE width="100%"><TR><TD>
<IMG SRC="../simply.jpg" ALT="cover photo">
<TD><TABLE>
<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
Harvey</A><BR>University of California, Berkeley</CITE>
<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
Wright</A><BR>University of California, Santa Barbara</CITE>
<TR><TD align="right"><BR>
<TR><TD align="right"><A HREF="../pdf/ssch27.pdf">Download PDF version</A>
<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
<TR><TD align="right"><A HREF="appendix-funlist.html"><STRONG>BACK</STRONG></A>
chapter thread <A HREF="appuindex.html"><STRONG>NEXT</STRONG></A>
<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
Press web page for <CITE>Simply Scheme</CITE></A>
</TABLE></TABLE>

<HR>


<P>
<STRONG>ADT:&nbsp;&nbsp;&nbsp;</STRONG> See <EM>abstract data type.</EM>

<P><STRONG>a-list:&nbsp;&nbsp;&nbsp;</STRONG> Synonym for <EM>association list.</EM>

<P><STRONG>abstract data type:&nbsp;&nbsp;&nbsp;</STRONG> A <EM>type</EM> that isn't provided
automatically by Scheme, but that the programmer invents.  In order to
create an abstract data type, a programmer must define <EM>selectors</EM> and
<EM>constructors</EM> for that type, and possibly also <EM>mutators.</EM>

<P><STRONG>abstraction:&nbsp;&nbsp;&nbsp;</STRONG> An approach to complex problems in which the solution
is built in layers.  The structures needed to solve the problem (algorithms
and data structures) are implemented using lower-level capabilities and given
names that can then be used as if they were primitive facilities.

<P><STRONG>actual argument expression:&nbsp;&nbsp;&nbsp;</STRONG> An expression that produces an actual
argument value.  In <CODE>(+ 2 (* 3 5))</CODE>, the subexpression <CODE>(* 3 5)</CODE> is
an actual argument expression, since it provides an argument for the
invocation of <CODE>+</CODE>.

<P><STRONG>actual argument value:&nbsp;&nbsp;&nbsp;</STRONG> A value used as an argument to a
procedure.  For example, in the expression <CODE>(+ 2 (* 3 5))</CODE>, the number
<CODE>15</CODE> is an actual argument value.

<P><STRONG>aggregate:&nbsp;&nbsp;&nbsp;</STRONG> An object that consists of a number of other objects.
For example, a sentence is an aggregate whose elements are words.  Lists and
vectors are also aggregates.  A word can be thought of, for some purposes,
as an aggregate whose elements are one-letter words.

<P><STRONG>algorithm:&nbsp;&nbsp;&nbsp;</STRONG> A method for solving a problem.  A computer program
is the expression of an algorithm in a particular programming language; the
same algorithm might also be expressed in a different language.

<P><STRONG>apply:&nbsp;&nbsp;&nbsp;</STRONG> To <EM>invoke</EM> a procedure with arguments. For example,
&quot;Apply the procedure <CODE>+</CODE> to the arguments <CODE>3</CODE> and <CODE>4</CODE>.&quot;

<P><STRONG>argument:&nbsp;&nbsp;&nbsp;</STRONG> A datum provided to a procedure.  For example, in
<CODE>(square 13)</CODE>, <CODE>13</CODE> is the argument to <CODE>square</CODE>.

<P><STRONG>association list:&nbsp;&nbsp;&nbsp;</STRONG> A list in which each element contains a <EM>name</EM> and a corresponding <EM>value.</EM>  The list is used to look up a
value, given a name.

<P><STRONG>atomic expression:&nbsp;&nbsp;&nbsp;</STRONG> An expression that isn't composed of
smaller pieces.

<P><STRONG>backtracking:&nbsp;&nbsp;&nbsp;</STRONG> A programming technique in which the program tries
one possible solution to a problem, but tries a different solution if the
first isn't successful.

<P><STRONG>base case:&nbsp;&nbsp;&nbsp;</STRONG> In a recursive procedure, the part that solves the
smallest possible version of the problem without needing a recursive
invocation.

<P><STRONG>body:&nbsp;&nbsp;&nbsp;</STRONG> An expression, part of the definition of a procedure, that
is evaluated when that procedure is invoked.  For example, in

<P><PRE>(define (square x) 
  (* x x))
</PRE>

<P>the expression <CODE>(* x x)</CODE> is the body of the <CODE>square</CODE>
procedure.

<P><STRONG>Boolean:&nbsp;&nbsp;&nbsp;</STRONG> The value <CODE>#t</CODE>, meaning &quot;true,&quot; or <CODE>#f</CODE>,
meaning &quot;false.&quot;

<P><STRONG>branch node:&nbsp;&nbsp;&nbsp;</STRONG> A <EM>tree node</EM> with <EM>children.</EM> The
opposite of a <EM>leaf node.</EM>

<P><STRONG>bug:&nbsp;&nbsp;&nbsp;</STRONG> An error in a program.  This word did <EM>not</EM> originate
with Grace Hopper finding an actual insect inside a malfunctioning computer;
she may have done so, but the terminology predates computers by centuries.

<P><STRONG>call:&nbsp;&nbsp;&nbsp;</STRONG> Synonym for <EM>invoke.</EM>

<P><STRONG>cell:&nbsp;&nbsp;&nbsp;</STRONG> One location in a <EM>spreadsheet.</EM>

<P><STRONG>children:&nbsp;&nbsp;&nbsp;</STRONG> The <EM>nodes</EM> directly under this one, in a <EM>tree.</EM> (See also <EM>siblings</EM> and <EM>parent.</EM>)

<P><STRONG>composition of functions:&nbsp;&nbsp;&nbsp;</STRONG> Using the value returned by a function
as an argument to another.  In the expression <CODE>(+ 2 (* 3 5))</CODE>, the value
returned by the <CODE>*</CODE> function is used as an argument to the <CODE>+</CODE>
function.

<P><STRONG>compound expression:&nbsp;&nbsp;&nbsp;</STRONG> An expression that contains subexpressions.
Opposite of <EM>atomic expression.</EM>

<P><STRONG>compound procedure:&nbsp;&nbsp;&nbsp;</STRONG> A procedure that a programmer defines.  This
is the opposite of a <EM>primitive</EM> procedure.

<P><STRONG>constructor:&nbsp;&nbsp;&nbsp;</STRONG> A procedure that returns a new object of a certain
type.  For example, the <CODE>word</CODE> procedure is a constructor that takes
words as arguments and returns a new word.  See also <EM>selector</EM>, <EM>mutator</EM>, and <EM>abstract data type.</EM>

<P><STRONG>data abstraction:&nbsp;&nbsp;&nbsp;</STRONG> The invention of <EM>abstract data types.</EM>

<P><STRONG>data structure:&nbsp;&nbsp;&nbsp;</STRONG> A mechanism through which several pieces of
information are combined into one larger unit.  The most appropriate
mechanism will depend on the ways in which the small pieces are used in
the program, for example, sequentially or in arbitrary order.

<P><STRONG>database program:&nbsp;&nbsp;&nbsp;</STRONG> A program that maintains an organized collection
of data, with facilities to modify or delete old entries, add new entries,
and select certain entries for display.

<P><STRONG>datum:&nbsp;&nbsp;&nbsp;</STRONG> The piece of information stored in each node
of a tree.

<P><STRONG>debugging:&nbsp;&nbsp;&nbsp;</STRONG> The process by which a programmer finds and corrects
mistakes in a program.  No interesting program works the first time;
debugging is a skill to develop, not something to be ashamed of.

<P><STRONG>destructive:&nbsp;&nbsp;&nbsp;</STRONG> A destructive procedure is one that modifies its
arguments.  Since the only data type in this book that can be modified is
the vector, all destructive procedures call <CODE>vector-set!</CODE>.

<P><STRONG>domain:&nbsp;&nbsp;&nbsp;</STRONG> The set of all legal arguments to a function.  For
example, the domain of the <CODE>count</CODE> function is the set of all sentences
and all words.

<P><STRONG>effect:&nbsp;&nbsp;&nbsp;</STRONG> Something a procedure does other than return a
value.  For example, a procedure might create a file on disk, or print
something to the screen, or change the contents of a vector.

<P><STRONG>empty sentence:&nbsp;&nbsp;&nbsp;</STRONG> The sentence <CODE>()</CODE>, which has no words in it.

<P><STRONG>empty word:&nbsp;&nbsp;&nbsp;</STRONG> The word <CODE>&quot;&quot;</CODE>, which has no letters in it.

<P><STRONG>end-of-file object:&nbsp;&nbsp;&nbsp;</STRONG> What the file-reading procedures return if
asked to read a file with no more unread data.

<P><STRONG>expression:&nbsp;&nbsp;&nbsp;</STRONG> The representation in Scheme notation of a request to
perform a computation.  An expression is either an <EM>atomic expression,</EM>
such as <CODE>345</CODE> or <CODE>x</CODE>, or a <EM>compound expression</EM> consisting of
one or more subexpressions enclosed in parentheses, such as <CODE>(+ 3 4)</CODE>.

<P><STRONG>field:&nbsp;&nbsp;&nbsp;</STRONG> A single component of a database <EM>record.</EM> For
example, &quot;title&quot; is a field in our example database of albums.

<P><STRONG>first-class data:&nbsp;&nbsp;&nbsp;</STRONG> Data with the following four properties:
<TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">It can be the argument to a procedure.
</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">It can be the return value from a procedure.
</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">It can be given a name.
</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">It can be part of a data aggregate.

</TABLE>
In Scheme, words, lists, sentences, trees, vectors, ports,
end-of-file objects, Booleans, and procedures are all first-class.

<P><STRONG>forest:&nbsp;&nbsp;&nbsp;</STRONG> A list of <EM>trees.</EM>

<P><STRONG>formal parameter:&nbsp;&nbsp;&nbsp;</STRONG> In a procedure definition, the name given to
refer to an argument.  In

<P><PRE>(define (square x) 
  (* x x))</PRE><CODE>x</CODE> is the formal parameter.  (Note that this is not the same
thing as an actual argument!  When we invoke <CODE>square</CODE> later, the
argument will be a number, such as 5.  The parameter is the <EM>name</EM> for
that number, not the number itself.)
<STRONG>function:&nbsp;&nbsp;&nbsp;</STRONG> A transformation of information that associates a
<EM>return value</EM> with some number of <EM>argument values.</EM> There may
be many different <EM>algorithms</EM> that compute the same function; the
function itself is the relationship between argument values and return
value, no matter how it may be implemented.

<P><STRONG>functional programming:&nbsp;&nbsp;&nbsp;</STRONG> A style of programming in which programs
are expressed as compositions of functions, emphasizing their arguments and
return values.  Compare to <EM>sequential programming.</EM>

<P><STRONG>global variable:&nbsp;&nbsp;&nbsp;</STRONG> A variable created with <CODE>define</CODE>, which has
meaning everywhere in the program.  The opposite of a <EM>local
variable.</EM>

<P><STRONG>helper procedure:&nbsp;&nbsp;&nbsp;</STRONG> A procedure that exists to help another
procedure do its work.  Normally, a user does not invoke a helper procedure
directly.  Instead, the user invokes a top-level procedure, which invokes
the helper procedure to assist it in coming up with the answer.

<P><STRONG>higher-order procedure:&nbsp;&nbsp;&nbsp;</STRONG> A procedure whose domain or range
includes other procedures.

<P><STRONG>index:&nbsp;&nbsp;&nbsp;</STRONG> A number used to select one of the elements of a vector.

<P><STRONG>initialization procedure:&nbsp;&nbsp;&nbsp;</STRONG> A procedure that doesn't do any work
except to invoke a <EM>helper procedure</EM> with appropriate argument
values.

<P><STRONG>interactive:&nbsp;&nbsp;&nbsp;</STRONG> An interactive program or programming language does
its work in response to messages typed by the user at a keyboard (or perhaps
indicated with a pointing device like a mouse).  Each message from the user
causes the program to respond in some way.  By contrast, a non-interactive
program works with input data that have been prepared in advance.

<P><STRONG>invoke:&nbsp;&nbsp;&nbsp;</STRONG> To ask a procedure to do its work and come up with a
return value.  For example, &quot;Invoke the <CODE>+</CODE> procedure,&quot; or &quot;Invoke
the <CODE>+</CODE> procedure with the arguments <CODE>3</CODE> and <CODE>4</CODE>.&quot;

<P><STRONG>keyword:&nbsp;&nbsp;&nbsp;</STRONG> The name of a <EM>special form.</EM>

<P><STRONG>kludge:&nbsp;&nbsp;&nbsp;</STRONG> A method that gets the job done but isn't very elegant.
Usually the result is a program that can't be extended the next time a new
feature is needed.

<P><STRONG>leaf node:&nbsp;&nbsp;&nbsp;</STRONG> A <EM>tree node</EM> with no <EM>children.</EM> The
opposite of a <EM>branch node.</EM>

<P><STRONG>leap of faith:&nbsp;&nbsp;&nbsp;</STRONG> A method for understanding recursion in which you
say to yourself, &quot;I'm going to assume that the recursive call always returns
the right answer,&quot; and then use the answer from the recursive call to produce
the answer to the entire problem.

<P><STRONG>list:&nbsp;&nbsp;&nbsp;</STRONG> A data aggregate containing elements that may
be of any type.

<P><STRONG>local variable:&nbsp;&nbsp;&nbsp;</STRONG> A variable that associates a formal parameter
name with an actual argument value.  It's &quot;local&quot; because the variable
exists only within one procedure invocation.  (This includes variables
created by <CODE>let</CODE>.)  This is the opposite of a <EM>global variable.</EM>

<P>
<P><STRONG>mutable:&nbsp;&nbsp;&nbsp;</STRONG> A data structure is mutable if its contents can change.

<P><STRONG>mutator:&nbsp;&nbsp;&nbsp;</STRONG> A procedure that changes the value of a data object.  In
this book, the only mutable data objects we use are vectors, so every
mutator is implemented using <CODE>vector-set!</CODE>.  See also <EM>selector,</EM>
<EM>constructor,</EM> and <EM>abstract data type.</EM>

<P><STRONG>mutual recursion:&nbsp;&nbsp;&nbsp;</STRONG> The program structure in which one procedure
invokes another, and the second invokes the first.

<P><STRONG>node:&nbsp;&nbsp;&nbsp;</STRONG> An element of a <EM>tree.</EM> A node has a <EM>datum</EM>
and zero or more <EM>children.</EM>

<P><STRONG>parent:&nbsp;&nbsp;&nbsp;</STRONG> The node above this one, in a <EM>tree.</EM> (See also <EM>children</EM> and <EM>siblings.</EM>)

<P><STRONG>pattern matcher:&nbsp;&nbsp;&nbsp;</STRONG> A program that takes a pattern and a piece of
data as inputs and says whether or not that piece of data is one that
the pattern describes.  We present a pattern matcher in Chapter 16.

<P><STRONG>plumbing diagram:&nbsp;&nbsp;&nbsp;</STRONG> A pictorial representation of the composition
of functions, with the return value from one procedure connected to an
argument intake of another.

<P><STRONG>port:&nbsp;&nbsp;&nbsp;</STRONG> An object that Scheme uses to keep track of a file that
is currently open for reading or writing.

<P><STRONG>portable:&nbsp;&nbsp;&nbsp;</STRONG> A portable program is one that can be run in more than
one version of Scheme or on more than one computer.

<P><STRONG>potsticker:&nbsp;&nbsp;&nbsp;</STRONG> A Chinese dumpling stuffed with meat and vegetables,
first steamed and then pan-fried, or sometimes first pan-fried and then
simmered in water added to the pan.

<P><STRONG>predicate:&nbsp;&nbsp;&nbsp;</STRONG> A procedure that always returns a <EM>Boolean</EM>
value.  By convention, Scheme predicates have names like &quot;<CODE>equal?</CODE>&quot; that
end in a question mark.

<P><STRONG>primitive procedure:&nbsp;&nbsp;&nbsp;</STRONG> A procedure that is already defined when a
Scheme session begins.  By contrast, a <EM>compound</EM> procedure is one
that the programmer defines in Scheme.

<P><STRONG>procedure:&nbsp;&nbsp;&nbsp;</STRONG> The expression of an algorithm in Scheme notation.

<P><STRONG>prompt:&nbsp;&nbsp;&nbsp;</STRONG> A character or characters that an interactive program
prints to tell the user that it's ready for the user to type something.  In
many versions of Scheme, the prompt is a <CODE>&gt;</CODE> character.

<P><STRONG>random access:&nbsp;&nbsp;&nbsp;</STRONG> A data structure allows random access if the time
required to locate an element of the structure is independent of its
position within the structure.

<P><STRONG>range:&nbsp;&nbsp;&nbsp;</STRONG> The set of all possible return values from a function.  For
example, the range of the <CODE>count</CODE> function is the set of non-negative
integers.

<P><STRONG>read-eval-print loop:&nbsp;&nbsp;&nbsp;</STRONG> The overall structure of a Scheme
interpreter.  It <EM>reads</EM> an expression from the keyboard, <EM>evaluates</EM> the expression by invoking procedures, etc., and <EM>prints</EM>
the resulting value.  The same process repeats forever.

<P><STRONG>record:&nbsp;&nbsp;&nbsp;</STRONG> One complete entry in a database.  For example, one album
in our database of albums.  A record contains several <EM>fields.</EM>

<P><STRONG>recursion:&nbsp;&nbsp;&nbsp;</STRONG> Solving a big problem by reducing it to smaller
problems of the same kind.  If something is defined recursively, then it's
defined in terms of itself.  See <EM>recursion.</EM>

<P><STRONG>recursive case:&nbsp;&nbsp;&nbsp;</STRONG> In a recursive procedure, the part that requires a
recursive invocation.  The opposite of the <EM>base case.</EM>

<P><STRONG>rest parameter:&nbsp;&nbsp;&nbsp;</STRONG> A parameter that represents a variable number of
arguments.  In the formal parameter list <CODE>(a b . x)</CODE>, <CODE>x</CODE> is a
rest parameter.

<P><STRONG>result replacement:&nbsp;&nbsp;&nbsp;</STRONG> A technique people can use to figure out the
value of a complicated Scheme expression by rewriting the expression
repeatedly, each time replacing some small subexpression with a
simpler expression that has the same value,
until all that's left is a single quoted or self-evaluating value.

<P><STRONG>robust:&nbsp;&nbsp;&nbsp;</STRONG> Able to function despite user errors.  Robust programs
check for likely errors and recover from them gracefully.

<P><STRONG>root node:&nbsp;&nbsp;&nbsp;</STRONG> The <EM>node</EM> at the very top of a <EM>tree.</EM>

<P><STRONG>selector:&nbsp;&nbsp;&nbsp;</STRONG> A procedure that takes an object as its argument and
returns some part of that object.  For example, the selector <CODE>first</CODE>
takes a word or sentence as argument and returns the first letter of the
word or first word of the sentence.  See also <EM>constructor,</EM> <EM>mutator,</EM> and <EM>abstract data type.</EM>

<P><STRONG>self-evaluating:&nbsp;&nbsp;&nbsp;</STRONG> An expression is self-evaluating if, when
evaluated, it has as its value the expression itself.  Numbers, Booleans, and
strings are the only self-evaluating objects we use in this book.

<P><STRONG>semipredicate:&nbsp;&nbsp;&nbsp;</STRONG> A procedure that answers a yes-no question by
returning <CODE>#f</CODE> for &quot;no,&quot; but instead of returning <CODE>#t</CODE> for
&quot;yes,&quot; it returns some additional piece of information.  The primitive
<CODE>member</CODE> procedure is a good example of a semipredicate.
(&quot;Semipredicate&quot; isn't a common term; we made it up for this book.)

<P><STRONG>sequencing:&nbsp;&nbsp;&nbsp;</STRONG> Evaluating two or more expressions one after the
other, for the sake of their <EM>effects.</EM>

<P><STRONG>sequential programming:&nbsp;&nbsp;&nbsp;</STRONG> A style of programming in which
programs say, &quot;First do this, then do that, then do that other thing.&quot;
(Compare to <EM>functional programming.</EM>)

<P><STRONG>siblings:&nbsp;&nbsp;&nbsp;</STRONG> Two <EM>nodes</EM> of a <EM>tree</EM> that are the
children of the same node.  (See also <EM>children</EM> and <EM>parent.</EM>)

<P><STRONG>side effect:&nbsp;&nbsp;&nbsp;</STRONG> See <EM>effect.</EM>

<P><STRONG>special form:&nbsp;&nbsp;&nbsp;</STRONG> A Scheme expression that begins with a <EM>keyword</EM> and is evaluated using a special rule.  In particular, some of
the subexpressions might not be evaluated.  The keywords used in this book
are <CODE>and</CODE>, <CODE>begin</CODE>, <CODE>cond</CODE>, <CODE>define</CODE>, <CODE>if</CODE>, <CODE>lambda</CODE>, <CODE>let</CODE>, <CODE>or</CODE>, and <CODE>quote</CODE>.  (The keyword itself is also
sometimes called a special form.)

<P><STRONG>spreadsheet program:&nbsp;&nbsp;&nbsp;</STRONG> A program that maintains a two-dimensional
display of data can compute some elements automatically, based on the
values of other elements.

<P><STRONG>state:&nbsp;&nbsp;&nbsp;</STRONG> A program's memory of what has happened in the past.

<P><STRONG>string:&nbsp;&nbsp;&nbsp;</STRONG> A <EM>word</EM> delimited by double-quote
marks, such as <CODE>&quot;A Hard Day's Night&quot;</CODE> or <CODE>&quot;000123&quot;</CODE>.

<P><STRONG>structured list:&nbsp;&nbsp;&nbsp;</STRONG> A list with <EM>sublists.</EM>

<P><STRONG>subexpression:&nbsp;&nbsp;&nbsp;</STRONG> An element of a <EM>compound expression.</EM> For
example, the expression <CODE>(+ (* 2 3) 4)</CODE> has three subexpressions: <CODE>+</CODE>, <CODE>(* 2 3)</CODE>, and <CODE>4</CODE>.

<P><STRONG>sublist:&nbsp;&nbsp;&nbsp;</STRONG> An element of a list that is itself a smaller list.  For
example, <CODE>(c d)</CODE> is a sublist of the list <CODE>(a b (c d) e)</CODE>.

<P><STRONG>substitution model:&nbsp;&nbsp;&nbsp;</STRONG> The way we've explained how Scheme evaluates
function invocations.  According to the substitution model, when a compound
procedure is invoked, Scheme goes through the body of that procedure and
replaces every copy of a formal parameter with the corresponding actual
argument value.  Then Scheme evaluates the resulting expression.

<P><STRONG>subtree:&nbsp;&nbsp;&nbsp;</STRONG> A tree that is part of a larger tree.

<P><STRONG>symbol:&nbsp;&nbsp;&nbsp;</STRONG> A word that isn't a number or a string.

<P><STRONG>symbolic computing:&nbsp;&nbsp;&nbsp;</STRONG> Computing that is about words, sentences, and
ideas instead of just numbers.

<P>
<P><STRONG>tree:&nbsp;&nbsp;&nbsp;</STRONG> A two-dimensional data structure used to represent
hierarchical information.

<P><STRONG>tree recursion:&nbsp;&nbsp;&nbsp;</STRONG> A form of recursion in which a procedure calls
itself recursively more than one time in each level of the recursion.

<P><STRONG>type:&nbsp;&nbsp;&nbsp;</STRONG> A category of data.  For example, words, sentences,
Booleans, and procedures are types.  Some types overlap: All numbers are
also words, for example.

<P>
<P><STRONG>variable:&nbsp;&nbsp;&nbsp;</STRONG> A connection between a name and a value.  Variables can
be <EM>global</EM> or <EM>local.</EM>

<P><STRONG>vector:&nbsp;&nbsp;&nbsp;</STRONG> A primitive data structure that is mutable and allows
random access.

<P><STRONG>word:&nbsp;&nbsp;&nbsp;</STRONG> A sequence of characters, including letters, digits, or
punctuation.  Numbers are a special case of words.

<P>

<HR>
<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
<A HREF="appendix-funlist.html"><STRONG>BACK</STRONG></A>
chapter thread <A HREF="appuindex.html"><STRONG>NEXT</STRONG></A>

<P>
<ADDRESS>
<A HREF="../index.html">Brian Harvey</A>, 
<CODE>bh@cs.berkeley.edu</CODE>
</ADDRESS>
</BODY>
</HTML>