References - Springer978-1-4612-1682-7/1.pdfimperative programming, 267 imperative Scheme,...

10
References Abelson, Harold, and Gerald J. Sussman, with Julie Sussman. 1985. Structure and Inter- pretation of Computer Programs. Cambridge, MA: MIT Press and New York, NY: McGraw-Hill Book Co. Adams, Douglas. 1979. The Hitch Hiker's Guide to the Galaxy. London, UK: Pan Books. Alexander, Christopher. 1979. The Timeless Way of Building. London, UK: Oxford Uni- versity Press. Boole, George. 1854. The Laws of ThOught. New York, NY: Dover Publications, Inc. Capra, Fritjof. 1982. The Turning Point: Science, Society, and the Rising Culture. New York, NY: Bantam Books, Inc. Friedman, Daniel P., Mitchell Wand, and Christopher T. Haynes. 1992. Essentials of Programming Languages. Cambridge, MA: MIT Press and New York, NY: McGraw-Hill Book Co. Gibson, William. 1986. Neuromancer. New York, NY: Ace Books. Hume, David. 1748. An Inquiry Concerning Human Understanding. New York, NY: The Bobbs-Merrill Co. Kuhn, Thomas S. 1962. The Structure of Scientific Revolutions. Chicago, ll.: The Uni- versity of Chicago Press. Nietzsche, Friedrich. 1967. The Will to Power. New York, NY: Vintage Books. Rucker, Rudy. 1995. The Hacker and the Ants. New Yory. NY: Avon Books. Schmidt, David A. 1986. Denotational Semantics, A Methodology for Language Devel- opment. Dubuque, IA: Wm. C. Brown Publishers. oGeorge, and Daniel P. Friedman. 1989. Scheme and the Art of Programming. Cambridge, MA: MIT Press and New York, NY: McGraw-Hill Book Co. Watt, David A. 1990. Programming Language Concepts and Paradigms. London, UK: Prentice-Hall. Watt, David A. 1991. Programming Language Syntax and Semantics. London, UK: Prentice-Hall.

Transcript of References - Springer978-1-4612-1682-7/1.pdfimperative programming, 267 imperative Scheme,...

References

Abelson, Harold, and Gerald J. Sussman, with Julie Sussman. 1985. Structure and Inter­pretation of Computer Programs. Cambridge, MA: MIT Press and New York, NY: McGraw-Hill Book Co.

Adams, Douglas. 1979. The Hitch Hiker's Guide to the Galaxy. London, UK: Pan Books. Alexander, Christopher. 1979. The Timeless Way of Building. London, UK: Oxford Uni­

versity Press. Boole, George. 1854. The Laws of ThOught. New York, NY: Dover Publications, Inc. Capra, Fritjof. 1982. The Turning Point: Science, Society, and the Rising Culture. New

York, NY: Bantam Books, Inc. Friedman, Daniel P., Mitchell Wand, and Christopher T. Haynes. 1992. Essentials of

Programming Languages. Cambridge, MA: MIT Press and New York, NY: McGraw-Hill Book Co.

Gibson, William. 1986. Neuromancer. New York, NY: Ace Books. Hume, David. 1748. An Inquiry Concerning Human Understanding. New York, NY: The

Bobbs-Merrill Co. Kuhn, Thomas S. 1962. The Structure of Scientific Revolutions. Chicago, ll.: The Uni-

versity of Chicago Press. Nietzsche, Friedrich. 1967. The Will to Power. New York, NY: Vintage Books. Rucker, Rudy. 1995. The Hacker and the Ants. New Yory. NY: Avon Books. Schmidt, David A. 1986. Denotational Semantics, A Methodology for Language Devel­

opment. Dubuque, IA: Wm. C. Brown Publishers. Sp~ger, oGeorge, and Daniel P. Friedman. 1989. Scheme and the Art of Programming.

Cambridge, MA: MIT Press and New York, NY: McGraw-Hill Book Co. Watt, David A. 1990. Programming Language Concepts and Paradigms. London, UK:

Prentice-Hall. Watt, David A. 1991. Programming Language Syntax and Semantics. London, UK:

Prentice-Hall.

Index

abstract data type, 41, 132, 175, 229, 299

abstraction, 36 abstraction principle, 40, 41, 44, 135 accum, 243 accumulator, 165,224,226 ack, 194 Ackermann, 194 Ada,267 address, 257 adopt, 229 ADT, 41, 45, 132, 141, 146, 147, 175,

229 Alexander, 20 Algol60, I algorithm,S, 8, 9, II aliases, 263 alist, 45, 213 all?,224 Alpha, 298, 312,322 Alpha controlloop, 301 amplifaer, 219, 222, 224 analog, 176 analog computers, 177 analog system, 191 and-structure, 79, 81 angle, 143 ANSIIIEEE Scheme, 158 APL,1 append,63 application, 13,36 application domains, 147 applicative Scheme, 3, 36, 72 apply, 51 arguments, 31 Aristotle, 4

arity,69 arrows, 260 artificial intelligence, I ASCll code, 7 assignment command, 107, 153 assignment structures, 16 assoc, SO, 214 association, 45,149,303 association list, 45, 128,213,303 associative stores, 257, 286, 287 assq,214 assv, 214 attenuation, 219 attractor, 171, 197 attributes, 148

Base Case assumption, 92 base class, 149 base object, 152 BASIC, 1 beginO-structure, 98 begin-structure, 98 best fit, 290 Beta, 312 binary,6 binary procedures, 69, 166 binding, 12, 18, 126, 156,303 block structure, 16, 171 Boole, 7 box and pointer diagram, 260 branch,230 breadth first search, 292 buckets, 287 but-left, 230 butterfly effect, 196

334 Index

C,6, 139,171,240,267,326 C++, 145,267 calculus, 181 call-by-name, 311 call-by-text, 311 calling environment, 131 call-with-current-continuation, 107 Capra, 170 car, 43 CARD ADT, 132, 135 case insensitive, 57 case-structure, 81, 85 cast, 143 casting, 143 cdr, 43 cell, 219, 257, 259 channel, 219 chaos, 196, 197 char-?,56 characters, 6 children, 229 Church, 321 class, 148, 152 CLAUSE, 84 client, 148 client-server model, 148 close-input-port, 283 close-output-port, 283 closure, 131 COBOL, 1 coerce, 36, 143, 144,243 collateral block, 156, 157, 158, 166 combinator, 166 combiner, 225 comma operator, 294 command, 261, 263 command-oriented, 267 commands, 267 common LISP, 2 communication networks, 219 compacting, 290 compiled, 130 completeness principle, 138 complex, 6 complex numbers, 141

complex*,I44 complex?, 143 complex+,I44 complex .. ?, 145 complex->string,l44 COMPOSITE, 209, 221 composite value, 5 composite variable, 259 compound interest, 177 computation, 89, 185,215,231,232,

236 conditional evaluation, 81, 85, 88, 306,

317 conditional expression, 81 conditions, 81 cond-structure, 81, 84, 328 congruent, 58 connectives, 7 cons-stream, 241, 245, 296 constructing alists, 218 constructor, 41, 45, 132, 135, 151, 152,

174,175,267 continuation, 3, 11, 105, 106, 153,301,

329 continuous dynamical system, 176, 177 continuous store, 281 control loop, 17, 18, 173, 174,301,

302,312 control structure, 16,79, 171,267 control-loop, 171, 174 convergent orbit, 171 convergent?, 195 count-down,l72 counter, 165, 178 CPU, 17 current-input-port, 99 current-output-port, 99 curried procedure, 166 Curry, 166,321 cycle, 171

data, 108 data abstraction, 135 data driven, 4, 165 data-driven programming, 145, 151

data-driven programming paradigm, 145

data flow diagram, 15 data flow structure, 15 debug phase, 71 debuggers, 71 debugging, 108 decay, 219 decimal,6 declaration, 156 declaration bindings, 127, 158 decoding, 219 deep recursion, 234 Deep Thought, 5 defensive programming, 104 defme, 265 defme-syntax, 295, 296, 297 defming environment, 131 definition, 18 delay, 237,239,240,241,295,327 delayed evaluation, 118 delaying environment, 239, 311 delegate, 151, 152 deposit!, 268, 269, 272 depth,230,231 depth first search, 292 derived class, 149 derived result, 102 design domain, 147 deviation, 125 devil's pitchfork, 200 diagnostics, 110 diagonalization procedure, 195 diagonalizing, 194 differential equation, 191 digital, 176 digital clock, 175 digital computers, 177 digital system, 191 discrete dynamical system, 177 dispatch procedure, 146 dispatcher, 151 display, 283 display-method, 152, 154, 155 distortion, 219

distribution, 124 divergent orbit, 171 divisibility, 57

Index 335

do-loop, 171, 172, 174, 187,242,294 domain,S, 20, 139 domain theory, 22 DOS,9 dot produc, 137 dynamic scope rule, 131, 160,307 dynamic type checking, 109, 140 dynamical system, 177, 180, 183, 196,

268

eager evaluation, 18, 78, 79, 126, 127, 128,129,296,309

EBNF, 22, 297 edit phase, 71 edit-test-debug cycle, 71 efficiency, 186, 187 efficiency measures, 186 Einstein, 196 elementary,210 elementary solutions, 190 employee class, 152 empty tree, 229 empty-stream?, 241, 296 encapsulation, 147 encode, 219 environment, 127, 173,303 environment diagram, 128, 130, 145 environment model, 126 Environment Obsolesence Problem.

308 environments, 126 environment-store context, 258, 259,

312 eq?, 47, 48, 214 eq?, equal?, eqv?, 47 equal?, 47, 234 eqv?,48,214 error, 302 error descriptor, 120 escape character, 9 essence, 286 essential features, 3

336 Index

eval,17 eval-and, 306 eval-apply, 306 eval-Iambda, 306 eval-or, 306 eval-structure, 305 evaluate, 304, 312, 315 evaluator, 17,31 exp*, 194 exponents, 61 expression block, 156, 158, 159 expression sequences, 97, 101 expression-oriented, 2, 267 expressions, 11 expressiveness, 3 extent, 126

fact procedure, 158 fail, 214 Fibonacci, 202, 254 FIFO stores, 289 file system, 328 files, 281 fdte~219,220,224,243

final state, 170 fmal? predicate, 171, 173 fmt fit, 290 fixed point combinator, 169 fIXed points, 197, 198 flatten, 232 fluid mechanics, 196 force, 239, 240, 241, 296, 311, 327 forcing environment, 239, 311 forks,260 formal language theory, 22 ~R11t~, 1,267 fractal, 199,200 fragmentation, 290 frame, 128, 129, 154, 172,219,303 function, 40, 135 functional paradigm, 4 functional programming, 4, 267 functional Scheme, 3, 4, 107,267,291,

321

Gamma, 329 garbage, 266 garbage collector, 266, 278 gOO,60 generators, 226 get, 214 get-type, 140 global binding, 127 global definitions, 121 Global Environment, 12, 17, 19, 130,

257,303 global extent, 126 global scope, 122, 127 global store, 257, 260 globals, 121 Gofer, 239, 267 ~,236,241,245

graphs,214 growth rate, 186 guards, 81 guess-and-test, 180

halting problem, 195 hannonic motion, 62 hash procedure, 287 hash table, 287 Haskell, 267 head,241,296 header,32 heap,257 Heisenberg, 196 hexadecimal, 6 hierarchy, 210 bigher-order procedure, 3 Holmes, 108 Hurne, 91 Hurne's fork, 91 hyper-exponential, 192, 194 hyper-exponential hierarchy, 191, 193

lEEFJ~SI Scheme, 3 i~sttucture,8I,82,83,84,88,97,300

imag-part, 143 imperative paradigm, 4

imperative programming, 267 imperative Scheme, 3,4,267,321 implementation domain, 147 imported procedures, 303 improve, 180 inexact numbers, 25 inrmite stream, 244, 245 infix notation, 14 information hiding principle, 121, 135 inheritance, 147, 149, 152 inheritance hierarchy, 152 initial state, 170, 171, 173 input ports, 98 input validation, 85 installing associations, 218 instance, 20, 148, 152 INTEGER ADT, 164 integers, 25 interactive procedure, 178 interactive system, 178 interface, 41, 135 Internet, 3 interpreted, 2 interpreters, 170 irrational, 25, 255 iteration, 171 iterative, 210, 212, 223 iterative evaluation, 171

Lambda, 321, 322,327 Lambda calculus, 321, 323 lambda expressions, 31, 36, 306 lambda lifting, 158 lambda-structure, 300 Laplace, 196 lazy evaluation, 78, 126,237,238,309 lazy procedures, 237, 239, 240, 295,

326 lazy-switch, 240 lcm,6O left,230 Leibniz, 293 length, 212, 230 let, 156, 157 let expression, 157, 171,327

let structure, 327 1et*, 156, 157 letrec, 156, 158 L'Hopital's, 186 lifetime, 126 LIFO store, 288 LISP, 1,2,321 list, 10,210 list? predicate, 213 list->stream, 243 list-ref, 43 literacy principles, 34 literal, 12, 16, 17, 305 literals, 263, 299, 315 local bindings, 127

Index 337

local definitions, 121 local extent, 126, 127 local scope, 122, 127, 171 locality principle, 122 locals, 121 location, 257 logarithms, 61 logic errors, 108, 110 logic gates, 7 logistic function, 197 Lorenz, 196, 197 LTM,281 L-value, 263,315

macro,3,239,293,295,~

macro expander, 293, 297 macro facility, 293 magnitude, 143 make-alist, 214 make-card,133 make-employee, 153 make-parent, 229 make-point, 136, 145 make-polar, 142 make-rectangular, 142 make-secretary, 154 make-time, 175 manager, 155 map, 51, 218, 222, 224, 2, map procedure, 222

338 Index

mark phase, 278, 279 nonnal order evaluation, 238 mathematical induction, 91, 92, 93 nU[Dbercrunching, 1 McCarthy, 1,321 mean, 124, 125 0(g),186 member, memv, memq, 65 object factory, 148 memoization, 239, 240 object language, 4, 297 message dispatcher, 145, 152 Objectoriented,4,174,289 message passing, 146 object oriented programming, 147, messages, 219, 243 151,153 meta language, 4, 297 objects, 147, 148 meta procedure, 174 octal,6 meta procedures,S 1, 174 open-input-file, 282 meta programming, 4, 9 open-output-file, 282 metaphysics, 4 operand, 13,31,80 method invocation, 148 operating systems, 170 methods, 148 operator, 13,31 Miranda, 267 optimizcrs, 170 MIT,3 options parameter, 69 modularity principle, 34 orbit, 171,250,251 monomorphic,329 order, 186 monomorphic equality predicates, 47 ordinal, 139 monomorphic procedure, 47 or-structure, 79 m-to-n,244 oscillating, 251 mutable object, 268 oscillating orbit, 171 mutable properties, 268, 286 outputports,98

overloading, 3, 137, 138, 151, 160 n-ary map, 223 n-ary procedures, 69, 104 packets, 219 native procedures, 303 pair,tO nats,245 palindrome,39 natural?,90 paradigm,3,4,220,267 NATURAL ADT, 164 paradox, 196 Necessary Scheme, 3, 93, 321 parameter bindings, 127, 158 nested lists, 228 parameterized expression, 31 Newel,1 parameters, 31 newline, 283 parent, 152, 154, 229 Newton, 181, 196 Pascal,6, 139, 171,267,326 Nietzsche, 7 pass-by-reference, 270 nodes, 229 pass-by-value, 269 noise, 219 patterns, 21 noise?,220 peek-c:har, 284 non mutable, 268 periodic, 25 I nonlocal, 121, 129, 131,239 Physical Symbol System Hypothesil nonmutable property, 268, 286 1,8 nonstrictproccdures, 239 physically equivalence, 47

physics, 191 Pig Latin, 118 pipelines, 39 pixels, 200 point, 136, 152 point-,137 POINT ADT, 136,145 point*, 137 point?,147 point+, 136 point-dist, 137 polar coordinates, 142 polar?,142 polar -> rectangular, 143 polymorphic equality predicates, 47 polymorphic predicate, 49,80,81,90,

124 polymorphic procedure, 3, 47, 48, 161 polymorphism, 139, 147. 150,329 port, 11, 98, 281 predicate, 33, 41, 55 prime, 221 Principle of Induction, 91 problem solving, 180 procedure, 9 procedure block, 32, 156, 158 processor, 17 programming environment, 71 promise, 3, 11,237,239,240,241,

245,295,296,311 prototypes, 298 pseudonym, 133, 136 put, 214 put procedure, 304 put-type, 141

quasi quote, 294 queues, 257, 289

radix, 25 ramified hierarchy, 230 random, 135 random access stores, 257 range errors, 109 rank,133

rational, 6, 25, 255 RATIONAL ADT, 162 read,282 read-char, 282 REALADT,163 real-part, 143 receiver, 219, 224, 225 recognizers, 49 recognizing alists, 218 record, 45, 214

Index 339

rectangular coordinates, 142 rectangular?, 142 rectangular->polar, 143 recursion, 87 recursive domains, 209, 210 recursive expression blocks, 157, 158 recursive procedure, 3, 191,210 recursive reals, 255 reference, 259, 260, 316 rem, 214 remainder, 58 removing associations, 215 rem-type, 141 res.erved word, 303 reserved-words, 301 resolution, 126 resolve, 301,304,308,312,313,314,

328 resolved, 157 resolver, 308 resolving, 156 reuse mechanism, 149 Revised Report, 3 root, 228, 229 rounding errors, 32 Rucker, 108 runtime errors, 108, 109 R-value, 263, 315

scalar*, 137 Scheme, 2, 3 Scheme home page, 3 Scheme object system, 147 scientific notation, 6, 26 scope, 122, 156, 157, 158, 172

340 Index

scope error, 109 scope rules, 129 search-env, 305 searching alists, 214 secretary, 154 selector, 41, 43, 133, 135, 175 self, 145, 152, 154 self application combinator, 169 semantic prototyping, 4, 298 semantics, 297 send, 148, 152 sequence, 11 sequence-s~bUes,97

sequential access store, 280 sequential block, 157 sequential evaluation, 318 sequential stores, 257 server, 148 service invocation, 148 session, 22 set, 11 setl, 107, 153,261,267 set-carl,261 set-cdrI,262 set-password!, 272 short circuit evaluation, 79, 80, 81,

118,305,317 side effect, 102, 261 signal, 219, 224, 243 signal processing, 4, 253 signal processing paradigm, 219, 222 Simon, I simple variable, 259 simplicity. 3 Smalltalk. 145 software component, 148 solve, 183 some?,224 SOS, 147, 148 special fonns, 16 Spack,108 stable, 2 stack, 257, 288 standard deviation, 124 state, 148, 170, 175

state space, 170, 177, 180 static, 219 static and dynamic scope rules, 311 static scope rule, 131, 160,239,307,

308 static type checking, 109, 118,328 static-scope, 327 stdin,99 stdout, 99 Steele, 2 STM,281 storable value, 257 store, 257, 312 strange attractor, 197 s~,3, 11,241,242,243.296 stream?,241 stream->list, 243 stream-ref, 242 STRING,210 string-?,56 string->eomplex, 144 string-fill!, 262 string-ref, 43 string-sett, 262 struct, 45 structurally equivalence, 47 S~bUe, 18,40, 135 s~bUe-function duality, 40 S~s, 16,305 stub,34 subclass, 149, 152, 154. 155 substitution model, 126, 127 successor case assumption, 92 suit, 133 super class, 149 Sussman, 2 sweep phase, 278, 279 switch, 240, 249 symbol,17 symbol pushing, I symbols, 7, 12 syntax, 297 syntax errors, 108 system, 170, 173, 175, 177 systems view, 170

table. 49. 214 tail. 241 tail recursive. 188. 189.210.213.215.

222.301.306.318 test phase. 7 I test-at-bottom iteration. 326 test-at-top iteration. 326 text files. 281 the-empty-stream. 241. 296 the-empty-tree. 229 top-down design. 34 top-down method. 87 trace. 89.90 traces, 231 tracing. 89 transcript. 23 transcript file. 23, 71 transmitters. 219. 226 tree flattening. 232 tree recursion, 228, 230, 254 tree removal. 234 tree substitution, 233 tree-accum, 255 tree-filter. 255 tree-map, 254 trees, 228 tree-sub, 233 trial and error, 180 triangle number, 87 trigonometry,62 truncated numbers, 32 truncation,6,25 two-cycle, 198 type, 139, 141 type error, 109 type expression, 139 type tag, 140 type=?, 141

unary procedures, 69 unary-map. 224 uncertainty principle, 196

undecidable, 195 unfold,210 unquoted, 294 unreferenced, 266 unsafe-variance, 159 until-structure, 326 update. 171.250

Index 341

update procedure. 170. 173, 175, 177

VALUE,5,lI values, 5, 270 value-store, 312 variable, 259, 261, 263, 267 variance, 124, 125. 159 variants, 137 vector, 10, 210 vector-fill!, 262 vector-ref, 43, 136 vector-set!,262 versatility goal, 102 virtual procedure, 150, 151 volatile, 18 volatile store, 281

Web,3 while structure. 294, 328 while-body. 294 while-condition, 294 withdraw!, 268. 272 wrapper, 133, 159 write, 283 write-char, 283 writeln, 104

xc, 136, 146

yc, 136, 146

zc, 136, 146 zero?,55 zip. 218, 249