assert, 131
async, 183
async*, 184
await, 183
break, 136
catch, 128
continue, 136
do, 128
dynamic, 78
for, 126
hide
useful, 55
if, 126
null
is a message, 176
null
implicitly returned, 63
rethrow, 129
return, 133
return, 63
super, 120
switch, 129
this, 120
throw, 124
try, 128
while, 128
yield, 134
ClassMirror
, 140
Iterable
, 65
Iterator
class, 72
MirrorSystem
, 143
NoSuchMethodError
, 30, 62, 77, 78
Object
, 78
API of, 34
implementation of NoSuchMethodError
, 30
apply()
, 68
basicNew
, 152
call()
, 69
currentMirrorSystem
, 153
double
, 79
getName
, 143
getSymbol
, 143
hashCode
, 20
instanceMembers
, 140
noSuchMethod
, 45
num
, 79
reduce()
, 65
reflectClass
, 140
reflectable
, xvii
runtimeType()
, 70
runtimeType
, 34
spawnUri
, 176
staticMembers
, 141
toString()
, 146
where()
, 65
Aarhus, Denmark, xvii
Abstract datatype, 59
accessor(s), 3
in Scala, 185
Ada programming language, 59
Ahé, Peter, xvii
Akka, 185
Anderson, Zachary, xvii
Andersson, Daniel, xvii
Animorphic, xix
Annamalai, Siva, xvii
annotation(s), 102
processing tool, in Java, 170
for optimizing reflection, 166
metadata, 165
ASCII
identifier(s) must be in, 116
assert statement, 131
AssertionError, 132
assignment, 67
AST, 160
autoboxing
no such thing, 2
Backus-Naur Form, 155
Extended, 155
Bak, Lars, xvii
Ben-Gurion
University, xix
Beta programming language, 107
binding
user interface, 189
block statement, 125
blocking, 175
boilerplate, 180
Boolean(s), 110
in tests, 126
are messages, 176
in asserts, 132
in loops, 128
braces
curly
delimiting class body or mixin, 36
delimiting named parameters, 62
Bracha, Teva, xviii
Bracha, Weihong Victoria, xviii
brackets
square
delimiting optional parameters, 61
in indexing operator, 5
in switch, 130
builder(s)
APIs, 67
mirrors, 189
built-in identifier(s), 119
bytecode
new, 152
C programming language, 1, 10, 46
family, 4
C++ programming language, 45, 59, 107
C# programming language, xiii, 11, 59, 107, 169, 185
canonicalization
of constants, 32
capabilities
for reflection, 166
mirrors are, 165
cascade(s), 66
cdspawn, 176
checked mode, 178
non-Boolean in Boolean expression, 110
abstract, 22
are objects, 33
as objects, 188
private, 33
class-based, 1
encapsulation, 59
language
definition, 13
closure(s), 65
equality, 70
for specifying grammar productions, 156
CLU programming language, 59
Common Lisp programming language, 107
commutativity, 20
compiler error
ambiguous export of names, 55
ambiguously imported names, 51
conflicting prefixes, 52
Part URI is not a part, 54
return expression from a generator, 73
using this in class methods, 32
violating mixin restrictions, 39
Computational Theologist, xix
concurrency
shared memory, 175
conditional expression, 125
configuration(s), 188
as default parameter values, 61
expression(s), 120
in metadata, 165
list(s), 114
map(s), 115
user-defined objects, 31
are functions, 64
classic
flaws, 45
redirecting, 29
support abstraction, 3
control constructs, 178
first class, 74
Cook, William R., 46
Crelier, Régis, xvii
Dart
designers of, xvii
VM team, xvii
deadlock, 175
debugging, 170
fix-and-continue, 169
declaration(s)
represented by symbols, 113
deferred loading, 57
dependency-injection, 188, 189
deployment
and reflection, 166
benefits from mirrors, 165
to Javascript, 142
distribution
benefits from mirrors, 165
do loop, 128
Doench, Greg, xviii
DOM, 70
dot operator, 66
double(s), 110
dynamic language
definition of, 189
dynamic loading, 169
E programming language, 185
EBNF, 155
ECMA, xvii
encapsulation, 59
equality
of closures, 70
operator, 19
user-defined
banned in switch, 131
Erlang programming language, 10, 185
Ernst, Erik, xvii
event
handlers, 174
loop, 174
example(s), 145
Point
, 79
exception(s)
and futures, 173
in an await, 184
throwing, 124
uncaught
inside a function, 63
export(s), 55
expression(s), 109
throw, 7
factories, 30
field(s)
constant, 31
Fletch, 169
Flow programming language, xi
fluent API(s), 67
for loop(s), 126
asynchronous, 185
for statement, 7
foreign function interface (FFI), 35
asynchronous, 183
emulation of, 68
expression(s), 115
generator, 184
mathematical, 61
type(s), 91
functional programming languages, 74
completed with error, 184
in Scala, 185
asynchronous, 184
getter(s), 66
parameter list of, 61
gradual typing, xi
Hack programming language, xi
Hausner, Matthias, xvii
Heisenbugs, 18
Hello World program, 1
Hewitt, Carl, 185
HTTP, 184
hypertext, 2
IDE(s), 189
live, 169
metacircular, 189
identifier(s), 116
of doubles, 110
of functions, 69
of integers, 109
deferred, 58
diamond, 56
weaknesses of, 59
indexing operator, 5
indirection
any problem in computing can be solved by, 165
inheritance
multiple, 36
of class methods, 33
of grammars, 156
single, 36
initializing formal(s)
types of, 79
declaration(s) unnecessary, 23
introspection, 139
isolate(s), 165, 171, 175, 185
as objects, 179
Israel, xix
iterator(s), 72
Java programming language, xiii, xix, 10, 59, 107, 169
Javascript
compilation to, 178
Javascript programming language, xiii, 5, 10, 46, 165
broken integers, 109
compiling Dart implications for reflection, 142
JDI, 170
json, 185
JVM, 152
Kronecker, Leopold, 109
label(s), 136
in breaks, 137
as objects, 188
main method of, 176
root, 176
Lisp programming language, 46, 169
Common Lisp dialect, 107
list(s), 113
are messages, 176
listener(s), 70
literal(s), 109
are constants, 31
function, 65
live evaluators, 169
live program modification, 170
live programming, 189
loading
dynamic, 188
of libraries, deferred, 57
lock(s), 175
loop(s), 126
Lund, Kasper, xvii
Macnak, Ryan, xvii
main
function, 5
method, 176
map(s), 114
are messages, 176
McCutchan, John, xvii
message passing, 171, 175, 186
metacircular
IDE(s), 189
method(s)
abstract, 22
class, 32
final, 3
main, 176
overloading, 75
static, 32
microtask(s), 174
API, 143
builder(s), 189
system(s) in reflectable, 167
Mitrovic, Srdjan, xvii
and expression problem, 39
application, 38
origins of, 46
mobile
application(s), 2
device(s), 1
platform(s), 2
Modula programming language family, 59
Modula-3 programming language, 107
Mountain View, CA, xvii
namespace combinators, 52
namespace(s), 9
NaN
unequal to itself, 110
new
bytecode, 152
Newspeak programming language, xix, 46, 170, 185, 188
non-Roman scripts, 116
noSuchMethod, 163, 169, 177, 182
number(s)
are messages, 176
Oberon programming language, 59
object(s)
creation of, 121
inspector(s), 169
object-based encapsulation, 59
object-capability model, 165
object-oriented programming, 68
performance of, 190
Odersky, Martin, 91
optional typing, xi, xv, 1, 107
parameter(s)
named, 62
optional, 61
positional, 61
required, 61
combinator(s), 155
using reflectable, 166
part(s), 53
PEG(s), 155
point(s)
constant, 31
Posva, Ivan, xvii
prefix(es), 51
as objects, 188
required for deferred imports, 58
promise(s), 177
in E, 185
property extraction, 122
and closure equality, 70
for isolates, 182
puzzler(s), 119
race(s), 175
Racket programming language, xi, 59, 106
Rasmussen, Linda, xvii
read-eval-print loop(s), 169
receive
port(s), 175
recursion
generator definition, 135
infinite, 132
mutual
of grammar productions, 156
of locals, 125
reference(s)
forward, 156
reflectable package, 142, 166, 167
can violate privacy, 177
definition of, 139
implications for speed and size, 142
used to discover runtime type of an integer, 109
reflective change, 169
reflexivity, 20
related work
asynchrony and concurrency, 185
representation
independence, 3
representation independence, 45, 66
reserved word(s), 119
rethrow statement, 129
return
non-local, 74
in async function, 184
inside a generator, 73
root library, 176
Ruby programming language, 46
runtimeType
of integers, 109
of strings, 112
Rx, 185
Sandholm, Anders, xvii
Scala programming language, 46, 185
Scheme programming language, 106
scope, of block statement, 125
script(s), 48
benefits from mirrors, 165
object-capability based, 165
Self programming language, 45, 169
self-modification, 139
send port(s), 175
are messages, 176
serialization, 179
shadowing
of identifier(s), 118
size
of deployed reflective code, 168
Smalltalk programming language, 10, 45, 59, 152, 169, 189
smartphone(s), 1
spawning, 176
statement(s), 125
compound, 126
grouping, 125
return, 133
simple, 126
static, 188
modifier, 9
stream(s), 71, 134, 171, 174, 176, 184, 186
looping over, 185
related work, 185
strict function(s), 178
string(s), 111
are messages, 176
escape sequences, 112
implicit concatenation of, 111
interpolation, 112
multiline, 111
raw, 112
Strongtalk, xix, 10, 46, 106, 169
subclassing
disallowed for double, 110
switch statement, 129
and minification, 143
mapping to/from strings, 143
tablets, 1
TC52, xvii
thread(s), 175
Torgersen, Mads, 91
trait(s), 46
transitivity, 20
tree-shaking, 142
try statement, 128
turn, 174
Turnidge, Todd, xvii
type(s), 3
checking
static, 3
generic, 107
See optional typing, 3
pluggable, 187
runtime
of functions, 71
Typescript programming language, xi
UI, 70
unary minus
creating a symbol
footnote, 113
uniform reference
Utah
university of, xix
value(s)
default
of optional parameters, 61
variable(s)
final
may not be reassigned, 67
Wadler, Philip, 46
web
browser(s), 1, 4, 142, 171, 177
world-wide, 1
while loop, 128
yield statement, 73, 134, 184, 185
Zenger, Matthias, 91
3.21.106.7