Special Characters
- "" (stringification) pseudo-operator
- 467
- "" key
- 501
- $" special variable
- 261, 306
- $$ special variable
- 155
- $. special variable
- 353
- $/ special variable
- 261, 361
- $; special variable
- 84
- $;$ prototype
- 338
- $@ special variable
- 430
- $_ special variable
- 14243, 160
- & notation in Linogram
- 495
- &@ prototype
- 337
- &;@ prototype
- 338
- && @rest condition
- 211
- (?!) regex lookahead operator
- 363
- * operator
- 273, 389, 558
- * quantifier
- 436
- * token
- 376
- ** operator
- 426
- + operator
- 558
- + quantifier
- 436
- + token
- 376
- -> operator
- 176
- . operator
- 176
- ; symbol in prototypes
- 179
- <...> operator
- 187, 359, 36065
- as rudimentary parser
- 359
- <=> operator
- 102, 108
- == operator
- 168, 17778
- for comparing objects
- 477
- ? quantifier
- 436
- @_, modification of
- 9192
- [...] operator
- 167
- \ (backslash) operator
- 8485, 87, 179, 439, 449
- \@$$ prototype
- 293
- \@\@ prototype
- 178
- | operator
- 437
- ||= operator
- 106, 1067
- || operator
- 103
A
- -a command-line option
- 149
- $a and $b variables
- 345
- Abelson, Harold
- xv
- absolute zero
- 475
- abstract base class
- 25, 478
- abstract syntax tree (AST)
- 5758, 393, 400, 408, 437, 55354, 557
- abstraction of functionality
- 16, 41, 225, 412
- accessor method
- 29, 477
- actions
- 44, 4950, 53, 446
- Adler, David
- 145
- agenda
- 20712, 365, 370, 38081
- agenda method, universality of
- 217
- aggregation
- 1920
- airplane
- 109
- algorithm
- 10, 11, 287, 471
- aliasing
- 7071, 81, 92, 112
- alternate universe
- 11617
- alternation of parsers
- 38788
- ambiguity in arithmetic expressions
- 54
- amortization
- 31013
- anchor component of URL
- 189, 199
- anonymous array
- 31, 50, 81
- anonymous functions
- 19, 76, 79, 86, 123, 25859, 300, 327, 371, 398, 421, 453, 478
- debugger's treatment of
- 41516
- append()
- 16263
- argument isn't numeric warning
- 108
- argument normalizer, inlined cache manager with
- 9092
- arithmetic expressions
- 54, 376, 390435
- overview
- 390400
- calculator
- 400, 42427
- debugging
- 41524
- generic-operator parsers
- 41215
- grammar for
- 376
- left recursive
- 4008
- arrays
- 66, 179, 181
- contrasted with iterators
- 11718
- repeated copying of
- 12930
- representation of database rows as
- 16566
- looping over
- 17782
- contrasted with linked lists
- 257
- arrow, definition in Linogram
- 498
- Ashton, Elaine
- 145
- assembly language
- 314
- associativity of operators
- 257, 4012, 426
- AST (abstract syntax tree)
- 5758, 393, 393, 400, 408, 437, 55354, 557
- AST_to_string() function
- 58
- asymmetry, in Linogram parameter specifications
- 559
- atomic expression
- 436
- atomic features in Linogram
- 494
- atomic ray
- 185
- atoms in regexes
- 436, 439
- attributevalue pairs in HTML tags
- 26
- automatic profiling
- 11112
- auxiliary parameter
- 240
B
- \b regex metacharacter
- 272, 439
- backslash character
- 8485, 87, 179, 439, 449
- backtracking
- 207, 45665
- in regex engine
- 364
- backtracking parsers
- 45665
- overview
- 456
- continuations
- 45761
- parse streams
- 46165
- backup program
- 206
- bacteriophage
- 135
- bad link detector
- 191, 192, 194
- bad luck
- 16869
- balanced parentheses
- 28788
- barbarian
- 2067
- base case
- 3, 5, 8, 35, 211, 534
- bear
- 35960
- BEGIN block
- 33839, 346, 35051, 353, 35556, 502
- beginner mode via alternative dispatch table
- 49
- behavior function
- 48081
- behavior function in constraint system
- 479, 480
- Bell Labs
- 563
- BFS (breadth-first search)
- 189, 200, 21315
- binary
- 13, 23941
- binary search
- 29293
- binding
- 7172
- bio-informatics
- 13539
- Bird, Richard
- xv
- blessing
- 356, 416, 466, 46869
- blocks
- 7273, 390
- bare
- 6768
- as arguments to sort() function
- 102
- BEGIN
- see BEGIN block
- disk
- see disk blocks
- labelled, parser for
- 54142
- boolean "not" operator
- 354
- Borges, Jorge Luis
- 417
- Boss, the
- 80
- box, definition in Linogram
- 497
- breadth-first search (BFS)
- 189, 200, 21315
- browsers
- 68
- buffer
- 363
- bullet symbol
- 441
- Bunce, Tim
- 164
- Burke, Sean
- xvxvi, 29, 35
- bytes
- 1920
C
- C programming language
- xiiixiv, 67, 75, 7980, 105, 1089, 153, 166, 344, 362, 365, 424, 501
- auto variables in
- 6
- for loop
- 173
- library of
- 153, 155
- C++ programming language
- 25
- /c regex modifier flag
- 367
- cache data, expiration of
- 9798
- cache hit
- 65, 90, 104, 107
- false
- 84, 93, 107
- cache management overhead
- 65, 87, 101, 109
- cache memory
- 68, 108
- cache miss
- 65, 91, 95, 107
- caching and memoization
- 63, 65, 83, 90, 101, 268
- alternatives to
- 1018
- and recursion
- 6566
- benefits of speed
- 10913
- caveats
- 8084
- evangelism
- 1089
- inline caching
- 6668
- in object methods
- 9699
- key generation
- 8495
- Memoize module
- 7080
- persistent caches
- 1001
- quantitative analysis of
- 65, 8384, 90, 101
- calculator
- 5461, 36569, 400, 42427, 435, 469
- calculus
- 302, 305, 314, 319
- call frame
- 23132
- call tree
- 21517, 220
- callbacks
- 10, 20, 23, 119, 127, 14344, 158, 160, 181, 18788, 190, 225, 227, 326, 371, 386
- caller() function
- 420
- canonical form
- 21819
- canonical order
- 34950
- cantankerous grandfather
- 228
- cardioid
- 490
- Carp module
- 186, 522, 532, 558
- carriage return
- 439
- carrot
- 162, 264, 275
- CGI
- 189, 197
- CGI::Push module
- 155
- chained lexers
- 36874
- character classes
- 273, 281
- CHDIR directive in configuration file
- 42
- chdir() function
- 42
- Christiansen, Tom
- xiii, 129
- chromosome
- 135
- chronologically() function
- 104
- chronological order
- 1026, 149, 299300
- CIA
- 18485
- circle, definition in Linogram
- 499
- clauses in grammars
- 376
- cleverness
- 211
- clock, memoized
- 8283
- clone method in URI::URL
- 199
- closedir() function
- 15
- closure
- 76, 124, 326
- closure property
- 7678
- closure operator (*)
- 273, 286
- cmp operator
- 105
- CMYK
- 6364
- code reference
- 910, 41, 88, 159, see also closure, see also anonymous function
- code value (CV)
- 7577
- coefficient
- 317, 500, 508
- college student, penurious
- 206
- combine()
- 34351
- comma-separated list
- 542, 555
- comparator function
- 1012, 29192, 350
- compiler
- 57
- comp.lang.perl.misc newsgroup
- 272
- components
- 27
- compound interest
- 31013
- compromise
- 85
- compulsive behavior
- 453
- concatenate() operator
- 39798
- concatenation
- 3, 273, 38687
- of parsers
- 38687
- of regexes
- 273, 27579, 28384, 32021, 438
- configuration table
- 4142, 47
- CONSTANT object
- 51416
- constant part of equation
- 5001, 503
- constants
- 483
- constraint networks
- 487
- constraint systems
- 472
- Constraint class
- 51213
- constraints section in Linogram specification
- 54950
- Constraint_Set class
- 51314
- _content key in HTML::TreeBuilder
- 27
- context
- 104, 11819, 159, 165, 18283, 192, 193
- Linogram evaluation environment
- 55760
- continuation
- 45761
- contradiction
- 50913
- control-backslash character
- 84
- conversion, decimal to binary
- 13
- core dump
- 75
- cos() function
- 31314, 319
- cosh() function
- 320
- cost-benefit ratio
- 110
- counting process
- 13132
- CPAN
- 1045, 152, 324, 500
- CPU
- 68
- crab cakes
- 82
- current matching position of scalar
- 36667
- curry() function
- 336, 484
- Curry, Haskell B.
- 327
- currying
- 32631, 34043, 346, 350, 353, 484
- custom key generation
- 9495
- cutsort() function
- 292, 300
- cutsorting
- 288300
- log files
- 293300
- cutting function
- 29091
- CV (code value)
- 7577
- cwd() function
- 46
- Cwd module
- 46
D
- -d operator
- 124
- dangling symbolic link
- 19, 2324, 183, 325
- database handle
- 141
- database query languages
- 471
- database-query parsing
- 44856
- overview
- 448
- lexer
- 44851
- parser
- 45156
- databases
- 35157, 44856
- of cached values
- 1001, 111
- flat
- 14053
- SQL
- 16368
- Data::Dumper module
- 392
- data structure
- 84, 542
- date format, ISO
- 105
- DB_File module
- 100
- DBI module
- 163, 16566, 168, 173
- DBM
- 101, 349
- dead ends
- 189
- debugger
- 15455
- debugging
- 15455, 41517, 429, 475, 479, 551
- decimal to binary conversion
- 13
- declarative programming
- 471563
- overview
- 47172
- linear equations
- 48890
- local propagation networks
- 47288
- overview
- 47275
- implementing
- 47587
- problems with
- 48788
- declarator in Linogram
- 545, 548
- default action for dispatch table
- 5254
- Defenestration of Prague
- 204
- defined operator
- 167
- depth-first search
- see DFS
- derivation of sentence
- 377
- derivative function
- 3056, 319, 320, 331
- DESTROY method
- 97
- destructive function
- 91, 262, 295
- destructive method
- 506, 511
- DFS
- 189, 200, 203, 21215, 22829, 383, 403
- ambiguity of
- 228
- bound on size of agenda
- 213
- contraindications for
- 21314, 379, 403
- recursion and
- 126, 189, 203, 214, 217
- web spiders and
- 214, 379
- diagnostic messages
- 13, 42, 201, 26061, 426, 476
- diamond, definition in Linogram
- 499
- die(), throwing exceptions with
- 430
- differential calculus
- 305, 319
- Dijkstra, Edsger Wybe
- 219
- directives
- 4546
- directory tree
- 123, 161
- directory walking, applications and variations of
- 1625
- dirhandles
- 1315, 118
- disk space
- 15
- diskettes
- 206
- dispatch tables
- 4161, 182, 438, 51516, 520, 528, 551, 559
- overview
- 41
- advantages of
- 4549
- calculator
- 5461
- configuration file handling
- 4154
- default actions
- 5254
- division as inverse of multiplication
- 48283, 51516
- division by zero
- 432, 48182, 517
- division of power series
- 32024
- division of treasure
- see partition problem
- do-it-yourself
- 126
- do-while loop
- 243
- domain name server
- 68, 108
- DONGS HLAGHAGHL
- 38687
- doorbell
- 38687
- drand48() function
- 153
- draw section in Linogram specification
- 55051, 55354
- drawables
- 53639, 55051, 55354
- drawables list
- 554
- drawing function
- 49495, 537, 561
- drunken fraternity brothers
- 156
- du command in Unix
- 16
- duration (of value)
- 7376
E
- -e command-line option
- 149
- -e operator
- 19
- each() operator
- 182, 349
- $elementfunc argument
- 29, 5961
- email
- 29394, 36364
- address
- 5354, 294
- header of
- 363
- empty list
- 2425, 36, 166, 179, 34647, 385
- empty string
- 273, 285, 372, 438, 511
- end tag in HTML
- 26
- Engineering Mathematics Handbook
- 324
- entropy
- 156
- environment
- 76
- Environment class
- 53839
- epoch format
- 295
- eq operator
- 169, 452
- Equation class
- 50011
- Equation::System class
- 50812
- equations
-
- for Fibonacci numbers
- 34
- inconsistent
- 50910
- linear
- 488513
- redundant
- 508
- roots of
- 301
- solving
- 301, 489
- trivial (0=0)
- 502
- equivalence classes
- 21819
- error diagnosis and recovery in parsing
- 42735
- escape sequence
- 85
- eta-conversion
- 38990, 39192, 423, 437
- Euclid's algorithm
- 231
- eval operator
- 46, 8688, 339, 340, 430, 543
- exaggeration
- 35
- exceptions
- 43032
- propagation of
- 432
- execute method in DBI module
- 168
- EXHAUSTED operator
- 17273
- exhaustion
- 122, 163, 189, 207, 209, 292, 350, 365, 370, 428, 459
- explicit function for
- 17173
- synthetic representation of
- 16773
- exists operator
- 107
- exp() function
- 320
- expiration of cache data
- 9798, 101
- explicit exhaustion function
- 17173
- explicit specification of empty list value
- 346
- explicit stacks
- 24253
- exponentiation operation
- 425
- Expression class
- 554
- expression parser
- 5556, 376, 38184, 391415
- expressions
- 37677
- in Linogram
- 55458
F
- -f operator
- 13
- @F special variable
- 149
- façade pattern
- 170, 17273
- factor of arithmetic expression
- 394
- factorial function
- 36, 241, 31415, 324
- fame and renown
- 415
- family tree
- 489
- Fcntl module
- 142
- features in Linogram
- 490, 49198, 52021, 52837
- Fenchurch
- 82
- FETCH method
- 184, 18485
- fetchrow_arrayref method in DBI module
- 165, 168, 173, 174
- Fibonacci numbers
- 3335, 65, 67, 24353
- eliminating recursion from calculation of
- 24353
- fields in email message header
- 363
- fields in flat text database
- 140, 148, 150
- File::Basename module
- 191
- File::Find module
- 126
- File::ReadBackwards module
- 152
- file system
- 12, 26
- filehandle
- 11516, 186
- as iterator
- 11517
- iterator interface to
- 13940
- reading in while loop
- 187
- tied
- 18687, 299
- files
- 1213, 18, 2324, 82, 127, 142
- configuration
- 4152
- for persistent caching
- 1001
- GIF
- 64
- INI
- 117
- log
- 14853, 29495
- with octopuses
- 161
- filters and transforms
- 15763
- fishing expedition
- 109
- flat databases
- 148, 452
- FlatDB module
- 14053, 356, 448
- FlatDB::Iterator module
- 15052
- flat-file database
- 140, 14048
- floating-point numbers
- 2056
- Flow chart
- 157
- foolishness
- 80, 88, 287
- forcing the promise
- 258, 269
- for loop, C-style
- 173
- foreach, using to loop over more than one array
- 17782
- fork() function
- 80
- Fortran
- 6
- four-dimensional beings
- 518
- fractions
- 231
- fragment of URL
- see "anchor component"
- FreezeThaw module
- 85
- Frege, Gottlob
- 327
- Frequently Asked Question
- 1, 16, 129
- fruit
- 234
- function calls, implementation of
- 229
- function factory
- 7071, 199, 259, 325, 385, 4067
- functional vs. object-oriented programming
- 2526
- functions
-
- custom key generation, for impure functions
- 9495
- higher-order
- 325, 333
- that return references
- 8182
- very fast functions
- 8384
- whose return values do not depend on their arguments
- 80
- with reference arguments
- 93
- with side effects
- 80
- Funes the Memorious
- 417
G
- \G regex metacharacter
- 36667
- /g regex modifier flag
- 366
- garbage collection
- xiii, 15, 73, 77, 79
- Gaussian elimination
- 500, 50212
- GCD (Greatest Common Divisor)
- 231
- geeks
- 310
- General Electric
- 69
- generic-operator parsers
- 41215
- Genomic sequence generator
- 13539
- getc() function
- 186
- get_links method of HTML::LinkExtor module
- 18990
- GIF file
- 6364
- globs
- 71, 186, 330, 332
- glob() operator
- 119
- global filehandle
- 48
- global variables
- 5, 47, 49, 14243, 264, 345, 42021, 454
- effect on recursion
- 56, 1314
- filehandles as
- 1314, 15, 46
- hashes instead of
- 51
- random number generator as
- 156
- Goff, Jeff
- 217
- golden ratio
- 35
- golden_rectangle, definition in Linogram
- 499
- goto
- 232, 243, 466
- grammar
- 37680
- Grasshopper
- 188201
- greatest common divisor (GCD)
- 23133
- grep() function
- 33335
- grocery bags
- 35
- Guttman, Uri
- 152
H
- hack
- 84
- hairy code
- 414
- Hall, Joseph
- 106
- Hamming problem
- 26972
- Hamming, Richard W.
- 269
- hash
- 20, 23, 27, 39, 51, 6667, 83, 89, 112, 200, 235, 296, 479, 49495, 512, 518, 561
- as dispatch table
- 44
- cache
- 6467, 69, 71, 96, 101
- for canonicalizing value
- 218
- iterator component of
- 119, 182
- tied
- 100, 416
- power set of
- 23536
- hash key
- 84, 93, 97
- hash slice
- 144
- hash value computation
- 83
- head of linked list
- 256, 375
- header of email message
- 363
- header of flat-file database
- 140
- headers of HTML document
- 30
- hexadecimal
- 96
- hierarchical data
- 1215, 128, 203, 530
- Hietaniemi, Jarkko
- 23435
- high school
- 300, 312, 489
- higher-order functions
- 325, 333
- currying
- 32557
- reduce() and combine()
- 34351
- hline, definition in Linogram
- 496
- hoax
- 69
- Hoefler, Jonathan
- 204
- Hoefler Type Foundry
- 204
- hook
- 171, 188, 201, see also callback
- HTML
- 2633, 5961, 179, 18889, 32627
- HTML::LinkExtor module
- 188, 190
- HTML::TreeBuilder module
- 27, 2729
- HTTP
- 150
- httpd log file
- 14849
- Human Genome Project
- 135
- hyperlinks
- 18897, 200, 214
I
- if-else tree
- 4244, 56, 59, 245
- impure function
- 9495
- INCLUDE directive in configuration file
- 48
- incrementing numerals
- 132
- India
- 299
- infinite loop
- 3, 117, 308, 403, 477, 506
- infinite sequence of integers
- 260
- infinite streams
- 255324
- overview
- 255
- hamming problem
- 26972
- lazy linked lists
- 25763
- Newton-Raphson method
- 30013
- power series
- 31324
- recursive streams
- 26369
- regex string generation
- 272300
- infix form of expression
- 54
- ingenuity
- 48, 68, 12426, 134, 179, 207, 323
- INI file
- 117
- inline caching
- 6668
- inlined cache manager, with argument normalizer
- 9092
- inlining
- 8688, 9092, 106
- internal stack
- 125
- intrinsic constraints
- 52022, 53435
- Intrinsic_Constraint_Set class
- 52122
- Introduction to Functional Programming
- xv
- i-number
- 294
- investment banking
- 9698, 1067
- IOU
- 25960
- IRC
- 16, 272
- is_in() example
- 93
- is_scalar method
- 531
- is_special() function
- 170
- isa method
- 88
- ISO date format
- 105
- iteration, C model of
- 17374
- iterators
- 115201
- overview
- 115
- alternative interfaces to
- 17787
- converting recursive functions to
- 20353
- examples
- 12657
- exhaustion of
- 122
- filehandle iterators
- 13940
- filters and transforms of
- 15763
- flat-file database
- 14048
- for permutations
- 12835
- genomic sequence generator
- 13539
- homemade
- 11926
- introduction
- 11519
- kicking
- 121, 157, 160, 185, 195
- random number generators
- 15357
- rewinding
- 255
- searching databases backwards
- 14853
- semipredicate problem
- 16376
- web spiders
- 187201
J
- jargon
- 377
- Junko
- 82
K
- KEEPER label for HTML elements
- 3031, 326
- key generation
- 8495
- overview
- 8488
- functions with reference arguments
- 93
- partitioning
- 9394
- key-generation method
- 85
- keys() function
- 119
- kicking an iterator
- 121, 157, 160, 185, 195
- kindof() accessor in Linogram
- 514
- Kleene closure
- 273
- Knuth, Donald E.
- 154, 309
L
- -l operator
- 19
- labeled block
- 54142
- Latin
- 80, 207
- laws of programming
- 43
- lazy linked lists
- 25763
- left-associative operator
- 426
- left recursion
- 4008, 4034, 409
- left-recursive grammar rules
- 4034
- Leler, Wm
- xvi
- lemniscate
- 490
- Leonardo of Pisa (Fibonacci)
- 33
- lexer, Perl's
- 45051
- lexers
- 36575, 44142, 44851, 540
- overview
- 35960
- chained
- 36874
- emulating <> operator
- 36065
- peeking
- 37475
- lexical analysis
- see lexers
- lexical closure
- 76
- lexical filehandle
- 48
- lexical variables
- 56, 14, 67, 73, 92, 418
- lexicality
- 7273, 79
- lexing
- see lexers
- line, definition in Linogram
- 494
- linear equations
- 48890
- linked lists
- 25557
- head
- 256
- lazy
- 25763
- splicing into
- 257
- tail
- 256
- linogram
- 490500
- overview
- 490500
- equations
- 50014
- feature types
- 53039
- missing features
- 56063
- parser
- 53960
- overview
- 53940
- declarations
- 54554
- definitions
- 54344
- expressions
- 55460
- required extensions
- 54142
- programs
- 543
- scalar types
- 53132
- %TYPES
- 542
- values
- 51430
- overview
- 51416
- constant values
- 51618
- feature values
- 52021
- feature-value methods
- 52730
- intrinsic constraints
- 52122
- synthetic constraints
- 52227
- tuple values
- 51820
- Lisp programming language
- xiiixiv, 107
- list assignment as condition
- 16566
- list context
- 104, 119, 159, 165, 18283, 192, 193
- list expressions
- 390
- List::Util module
- 34347
- literal regexes
- 274
- local() operator
- 14243, 160, 306
- local propagation networks
- 47288
- overview
- 47275
- implementing
- 47587
- problems with
- 48788
- log files
- 14853, 293300, 34849
- log() function
- 320
- LOGFILE directive in configuration file
- 42
- lookahead assertions
- 439
- lookbehind assertions
- 439
- loop control operators
- 243
- love and admiration
- 17
- lowest-precedence operator
- 437
- ls command in Unix
- 16
- ls -R command in Unix
- 16
- Lucas, Edouard
- 6
- Luke the Hermit
- 107
- LWP::Simple module
- 18889, 201
M
- -M operator
- 8283
- m//g operator
- 119
- Macdonald, John
- 234
- Machol, Richard Morris
- 228
- Macintosh
- 206
- magic variable
- 184, 186
- mailto URL
- 200
- maintenance programmers
- 87
- make_counter example
- 7779
- malloc() function
- 166
- map() function
- 124, 15760, 262, 33336, 345, 397, 521, 523
- Marshall, Edward Waite
- 69
- marshalling
- 69
- mask function
- 170, 17273
- Mastering Algorithms with Perl
- 234, 293
- Math::BigFloat (multiprecision floating-point library)
- 307, 435
- Math::BigRat module
- 324
- Math::Complex module
- 435
- mathematics geeks
- 310
- matrix transformations
- 500
- max() function in Scalar::Util module
- 34345
- maxstr() function in Scalar::Util module
- 344
- MAYBE label for HTML elements
- 3031, 326
- meaning of parsed input
- 376, 384
- meiosis
- 261
- memoize() function
- 89, 111
- Memoize module
- 6980, 83, 105
- memoization
- see caching and memoization
- memoized clock
- 8283
- merging streams
- 27071, 27475
- Michie, Donald
- 69
- min() function
- 34344
- minstr() function
- 344
- ML for the Working Programmer
- xv
- monster module
- 70
- morphology
- 35960
- mortgage
- 31013
- Mozilla
- 198
- MSIE
- 198
- multiple-list iterator
- 179
- my declaration
- 5, 13, 67, 7273
- oddity in semantics of
- 264
- my variable
- see lexical variables
- mystery
- 185
N
- \n (newline) character
- 36263
- -n command-line option
- 149
- %N hash for naming parsers
- 41623, 467
- nasty regex
- 287
- nasty surprises
- 142, 229, 335, 427
- national security
- 185
- network server
- 68, 9495, 108, 148, 189
- newline character
- 261, 363, 441
- newsgroups
- 16, 272
- Newton, Isaac
- 301
- Newton-Raphson method
- 30013
- nextval method
- 176
- NEXTVAL operation
- 11516, 12021, 17173
- 90-10 rule
- 110
- nodes
- 21213, 21517, 22528
- in AST
- 393, 400
- in HTML::TreeBuilder object
- 2729
- of linked list
- 25663
- in local propagation network
- 47274
- of notional tree of sentential forms
- 377, 380, 382, 403
- in outline structure
- 44244
- non-reentrant
- 6
- nonterminal symbols
- 377
- normalization of equations
- 511
- Norvig, Peter
- xiii, xv
- null function
- 24, 60
- null pointer
- 166
- NULL value in SQL databases
- 163, 165
- numerals, canonical form for
- 219
O
- O() notation
- 103
- object constructor methods
- 75, 81, 184, 187, 5012, 516, 518, 527
- object identity, testing with ==
- 477
- object methods, caching in
- 9699
- object-oriented (OO) programming
- 2526, 75, 9698
- octopuses
- 8182, 12728, 161
- oddity
- 24, 264
- odometer method
- 13234, 138
- OO (object-oriented) programming
- see object-oriented programming
- open() function
- 116
- opendir() function
- 13
- operating system
- 68, 8283, 14950
- operator overloading
- see overloading
- operator precedence
- 357, 372, 39394, 41415, 437, 465
- optimization
- 81, 11011, 171, 204, 20911, 23031, 24041, 253, 322, 332
- option checking
- 201
- optional item, parser for
- 541
- orcish maneuver
- 106
- Orwant, Jon
- 234
- out of scope
- 15, 7175, 92, 264
- outlines
- 44048
- overload module
- 357, 467
- overloading
- 356, 416, 46570
- oxcart
- 109
P
- pad
- 7377
- Pair objects
- 468
- palindromes
- 21415
- parabola
- 3013
- Paradigms of Artificial Intelligence Programming
- xiii, xv
- param declaration in Linogram
- 56062
- parameter specifications in Linogram
- 54549, 552, 55960
- parameters
- 56061
- parentheses
-
- balanced
- 28788
- disambiguating expressions
- 54, 58, 437
- in output of parser
- 39394, 398
- in regex
- 364
- parse method in HTML::LinkExtor
- 190
- parser function
- 551
- parser operator
- 390
- parser, Perl's
- 159, 360
- Parser module
- 384
- parsing
- 43, 11718, 198, 199, 351, 359470
- overview
- 359
- arithmetic expressions
- 390435
- backtracking parsers
- 45665
- database-query parsing
- 44856
- HTML
- 27, 18890
- in general
- 37684
- lexers
- 35975
- Linogram specifications
- 53957
- overloaded operators for
- 46570
- recursive-descent parsers
- 38490
- regexes
- 43540
- partial sums
- 316
- partition problem
- 3539, 9394, 20412
- partitioning
- 3539, 9394
- partitions of an integer
- 21725, 22526
- comparing
- 224
- pathfinder.com
- 198
- patterns
- 131, 135, see also regexes
- Paulson, Lawrence
- xv
- penurious college student
- 206
- performance
- 6364, 80, 93, 106, 110, 26668, 332, 453
- period of random-number generator
- 154
- Perl 6
- 176
- Perl interactive debugger
- 415
- perldoc program
- 112
- permutations
- 34, 12835
- persistent caches
- 1001
- pi
- 31719, 426
- pic program
- 563
- pipe
- 117
- plain text
- 26
- plumber
- 2067
- plutonium
- 9495, 116
- point, definition in Linogram
- 494
- polymorphism
- 331
- pop
- 126, 223
- POPDIR directive in configuration file
- 4647
- pos() function
- 36667
- postfix form
- 54
- postprocessing function
- 544
- PostScript
- 494, 496
- power series
- 31324
- overview
- 31319
- derivatives
- 319
- symbolic computation
- 32024
- power series expansion
- 31324
- power set
- 234
- powers of 2
- 26569
- Prague, Defenestration of
- 204
- precedence
- 357, 437, 465
- in arithmetic expressions
- 393, 415
- predicate function
- 107, 16062, 194, 263, 333, 537
- pre-emption
- 223
- preprocessor
- 139
- primitive features in Linogram
- 491, 53132
- print(), as expression
- 424
- printer
- 63
- print statement
- 9, 416
- printf() function
- 19
- priority queue
- 225, 228
- private variables
- see lexical variables
- probability
- 65
- productions in grammars
- 376
- profiler
- 11011
- profiling
- 11012
- Prolog programming language
- 471
- promise
- 25758
- forcing
- 258, 269
- propagation network
- 48586
- prototypes
- 123, 159, 178, 179, 236, 293, 304, 334, 33743, 346
- proxy server
- 108
- pruning
- 213, 380, 382, 403
- pseudo-random
- 153
- pun
- 122, 374
- punctuation, excessive
- 144
- pure functions
- 82
- pure virtual methods
- 25
- push() function
- 126
- PUSHDIR directive in configuration file
- 46
Q
- q{...} syntax
- 87
- qmail mail system
- 29394, 299
- quantification of regexes
- 437
- queue
- 12426, 127, 188, 19293, 201
- queue members
- 193
- qw(...) syntax
- 150
R
- rabbits
- 3334
- Rand() function
- 153
- rand() function
- 153
- random() function
- 153
- random number generation
- 15357
- Raphson, Joseph
- 301
- readdir() function
- 118
- READLINE method
- 187
- reciprocal
- 51617
- of power series
- 32324
- recursion
- 1
- and caching
- 6566
- as DFS
- 21517
- elimination of
- 22953, 348
- recursive-descent parsers
- 38490
- overview
- 384
- compound operators
- 38890
- parser operators
- 38688
- very simple parsers
- 38486
- recursive streams
- 26369, 280, 323
- redo
- 243
- re-entrancy
- 6, 4849
- reentrant function
- 49
- ref() function
- 88, 5012
- ref($base) || $base technique
- 5012
- refactoring
- 22223, 23439, 241, 24953, 328
- reference arguments, functions with
- 93
- references
- 910, 19, 41, 61, 71, 7376, 88, 16465, 467, 502, 554
- comparing with ==
- 16869, 178
- from pad
- 75, 76
- functions returning
- 8182
- functions accepting
- 93
- stringification of
- 88, 93, 169, 41516, 467
- referrer, fake
- 193
- referring URL
- 192
- regex engine
- 119, 471
- regex string generation
- 272300
- regexes
- 119, 143, 272, 286, 361, 36566, 36869, 43540, 471
- as examples of declarative programming
- 471
- as lexers
- 365
- syntax of
- 437
- relaxation
- 488
- repetition of parser operation
- 38990
- return-value parameter
- 240
- reverse() function
- 135
- RGB
- 6364
- robot policy
- 197
- robots.txt file
- 19798
- Roode, Eric
- xvi, 178, 17879
- root feature
- 490
- root of equation
- 301
- ROOT type in Linogram
- 542
- round-off error
- 3056, 3078, 322
- RPN (reverse Polish notation)
- 5455
S
- -s operator
- 12, 15
- /s regex modifier flag
- 450
- s/// operator
- 87
- scalar
- 9, 18384, 366
- tied
- 18485
- scalar context
- 11819, 159, 183, 192
- Scalar::Util module
- 340
- scale() function
- 32930
- scaling operation
- 27172, 32023, 32930, 33839, 5035, 508, 511, 51920, 52324, 52829
- scanning
- see lexers
- schema
- 140, 142, 150
- Schönfinkel, Moses
- 327
- Schwartz, Randal
- xiii, xvi
- Schwern, Michael
- 145
- scope
- 20, 6768, 7176, 92, 98, 264, 454
- vs. duration
- 7289
- searching databases backwards
- 14853
- secret weapon
- 185
- seed (of pseudo-random number generator)
- 153
- seek() function
- 142, 148
- self-referent stream definition
- 26369, 280, 323
- semipredicate function
- 107
- semipredicate problem
- 107, 124, 163, 170
- sentences (in grammars)
- 377
- sentential form
- 377
- serialization
- 69
- set difference
- 35456
- set_prototype() function
- 340
- shift() function
- 126, 223
- silly examples
- 18485, 346, 45657
- sin() function
- 31314, 319
- sinh() function
- 320
- Sitaker, Kragen
- xvi, 453
- Slashdot
- 334
- slope
- 302, 302, 331
- sort() function
- 101, 299, 345
- sorting
- 82, 1016
- partitions
- 224
- comparator functions
- 1014, 29192, 350, 353
- tiebreakers in
- 103
- to obtain canonical form
- 219
- soup, fish-dog-and-carrot
- 275
- spam
- 363
- special cases
- 32, 110, 211, 236, 284, 345, 409, 455, 478, 505, 536, 556
- splines
- 562
- split() function
- 137, 36465
- sprintf() function
- 1, 1056
- SQL
- 163, 168, 471
- sqrt() function
- 300, 307
- square, definition in Linogram
- 498
- square() function
- 83
- srand() function
- 155
- srand48() function
- 155
- srandom() function
- 155
- stack
- 50, 5556, 44647
- call stack
- 12526, 22931
- explicit simulation of
- 38, 24253
- start symbol
- 37677
- start tag in HTML
- 26
- stat() function
- 294
- statements as expressions
- 42425
- static variables
- 6768, 124
- Stein, Lincoln
- 135
- Storable module
- 85, 89
- STORE method
- 18485
- streams
- 259, 26162, 333, 375
- merging
- 27071, 27475
- strftime() function
- 297
- strict 'vars'
- 345
- string
- 96
- string generator
- 440
- string literals, lexing
- 44950
- stringification
- 416, 467
- Structure and Interpretation of Computer Programs
- xv
- StrVal() function in overload module
- 467
- stub functions
- 7172, 7576, 99, 112
- subclass
- 25
- subdirectories
- 12
- sub-parser
- 374
- substr()
- 34142
- subtraction as inverse of addition
- 48283
- subtype definitions
- 543
- sum() function
- 34446
- Sussman, Gerald Jay
- xv
- Sybase
- 145
- symbolic links
- 15, 19, 2324, 183
- dangling
- 19, 2324, 183, 325
- symbolic references
- 51, 550
- symbol table
- xiii, 7071, 99, 112
- symbols in grammars
- 37677
- symbols, terminal vs. nonterminal
- 377
- syntactic equivalence of tokens
- 436
- syntactic sugar
- 122, 123, 172, 259, 374
- syntax
- 176, 397
- bizarre
- 180
- irregularity of Perl's
- 453
- obsession with
- 176
- synthetic constraints
- 52021, 52227
- Synthetic_Constraint_Set class
- 52225
- system administrators
- 149
- systems programming
- 152
T
- $^T special variable
- 8283
- \t (tab) character
- 450
- tab character
- 450
- tac command in Unix
- 152
- _tag key in HTML::TreeBuilder
- 27
- tags
- 26, 3031, 44, 190
- tai64n
- 293, 295
- tail of linked list
- 256
- tail-call elimination
- 229
- tangent function
- 320
- tangent line
- 302
- tautology
- 508
- tell() function
- 148
- Tels
- 307, 324, 435
- temperature conversion
- 47275, 483, 48587
- terminals
- 377
- terminal symbol
- 377
- terminator pattern
- 36265
- term of arithmetic expression
- 394
- terms
- 394
- $textfunc argument
- 29, 5961
- text object in Linogram
- 561
- thrashing
- 129
- three blind mice
- 308
- three-dimensional diagrams in Linogram
- 518, 556
- tie() operator
- 100, 173, 18487
- tied hashes
- 100, 416
- TIEHANDLE method
- 187
- TIESCALAR method
- 184
- time() function
- 8283, 112, 113
- Time::HiRes module
- 112
- times() function
- 113
- to-do list
- see agenda
- tokens
- 5557, 137, 35960
- syntactic equivalence of
- 436
- tokenization
- see lexers
- token-manufacturing function
- 37172, 451
- Torkington, Nat
- 129
- tortoise and hare algorithm
- 309
- tourists
- 76
- Tower of Hanoi
- 611
- transcendental functions
- 313, 409
- transforms
- see filters and transforms
- treasure
- 3539, 20611
- trees
- 1214, 2627, 58, 212, 217, 37780, 4023, 440, 535
- iterator for searching
- 22529
- printing
- 23334, 24243
- recursion as search of
- 21517
- traversal in various orders
- 126
- tricks
- 86, 90, 1078, 120, 137, 160, 179, 211, 312, 372, 416
- trigonometry
- 322, 48990, 496
- trivial equation (0=0)
- 502
- trivial stream
- 259
- Tuma, Jan J.
- 324
- tuples in Linogram
- 491, 51820, 52530, 55556, 558
- Type class
- 53039
- Type::Scalar class
- 53132
- %TYPES hash in Linogram
- 54243
- typesetting
- 204
- type specimen catalog
- 2045
U
- ugly code
- 373
- unary minus
- 555
- undef
- 94, 160, 16364, 167
- undefined variables in calculator program
- 426
- union scale
- 207
- UNIVERSAL::isa() function
- 88, 181, 258
- Unix
- 15, 117, 150, 294
- epoch time format
- 295
- untagged text
- 27
- until loop
- 233
- upto()
- 12123, 25960
- URI::URL module
- 199
- URL
- 18893
- bad
- 191
- fragment part
- 199
- mailto
- 200
- referring
- 149, 19293
- user-agent
- 198
- user parameter to callback function
- 49, 51, 6061, 371, 386, 454
- user interfaces
- 16
- user-supplied key generators, applications of
- 8990
V
- Value class
- 51516
- Value::Constant class
- 51618, 558
- Value::Feature class
- 52730, 535, 55859
- Value::Tuple class
- 51820
- value of parsed input
- 376, 38485
- values() function
- 119
- variables, static
- 6768
- VERBOSITY directive
- 42
- virtual methods
- 25
- vline, definition in Linogram
- 497
W
- Wadler, Philip
- xv
- Wall, Larry
- xiii, xvi, 145, 176
- waste of time
- 64, 104, 110, 12930, 190, 197, 230, 26568, 304, 307, 461
- web browsers
- 68, 108
- web robots
- see web spiders
- web server log
- 14850
- web spiders
- 187201
- overview
- 18790
- DFS unsuitable for
- 214
- pursuing only interesting links
- 19092
- referring URLs
- 19297
- robots.txt
- 197200
- $whence argument to seek()
- 142
- while (caller()) loop
- 420
- while loop
- 13, 187, 209
- reading filehandle in
- 187
- that executes only once
- 222
- whitespace
- 27, 441
- wildcard
- 13637, 13638
- Windows
- 117
- WIRED magazine
- 228
- "without" operator
- 35456
- wizard
- 2067
- Wolf Book
- 234, 293
- Wong, Meng
- xvi
- word boundary
- 272, 439
- Wrigley, Ave
- 187
- WWW::RobotRules module
- 19899
- WWW::SimpleRobot module
- 18788, 2001
- WYSIWYG drawing system
- 489
Y
- yes command in Unix
- 117
- Yukon Territory
- 179
Z
- 0e0 trick
- 1078
- "0 but true"
- 108