Index

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

Function class, 68, 91

Iterable, 65

Iterator class, 72

MirrorSystem, 143

NoSuchMethodError, 30, 62, 77, 78

Object, 78

API of, 34

implementation of NoSuchMethodError, 30

Timer, 173, 174

Type class, 33, 46

apply(), 68

basicNew, 152

call(), 69

currentMirrorSystem, 153

double, 79

getName, 143

getSymbol, 143

hashCode, 20

instanceMembers, 140

main(), 59, 64

noSuchMethod(), 30, 70

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

actor(s), 1, 10, 185

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

break statement, 136, 178

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

callback(s), 177, 186

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

class(es), 2, 7, 107

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

URI

not constant, 54, 55

interpolated string, 54, 55

using this in class methods, 32

violating mixin restrictions, 39

Computational Theologist, xix

concurrency

shared memory, 175

conditional expression, 125

configuration(s), 188

constant(s), 31, 46

as default parameter values, 61

expression(s), 120

in metadata, 165

list(s), 114

map(s), 115

user-defined objects, 31

constructor(s), 3, 7, 46

are functions, 64

classic

flaws, 45

redirecting, 29

support abstraction, 3

continue statement, 136, 178

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

Denmark, xvi, xvii

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

await, 183, 185

conditional, 6, 125

throw, 7

factories, 30

field(s)

constant, 31

Fletch, 169

Flow programming language, xi

fluent API(s), 67

for loop(s), 126

for loops

asynchronous, 185

for statement, 7

foreign function interface (FFI), 35

function(s), 61, 74

asynchronous, 183

emulation of, 68

expression(s), 115

generator, 184

mathematical, 61

type(s), 91

functional programming languages, 74

future(s), 171, 172, 177, 186

completed with error, 184

delayed, 174, 185

in Scala, 185

generator(s), 71, 134, 184

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

identity, 8, 20

of doubles, 110

of functions, 69

of integers, 109

IEEE 754, 109, 110

if statement, 6, 126

import(s), 9, 49

deferred, 58

diamond, 56

weaknesses of, 59

indexing operator, 5

indirection

any problem in computing can be solved by, 165

inheritance

mixin-based, 1, 36, 46

multiple, 36

of class methods, 33

of grammars, 156

single, 36

initializing formal(s)

types of, 79

integer(s), 5, 109

interface(s), 2, 46, 79, 107

declaration(s) unnecessary, 23

introspection, 139

isolate(s), 165, 171, 175, 185

as objects, 179

Israel, xix

iterable(s), 72, 134

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

libraries, 9, 47

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

isolate, 176, 179

method, 176

map(s), 114

are messages, 176

McCutchan, John, xvii

Meijer, Erik, xvii, 185

message passing, 171, 175, 186

metacircular

IDE(s), 189

metaclass, 33, 45, 46

metadata, 142, 165, 170

method(s)

abstract, 22

class, 32

final, 3

main, 176

overloading, 75

static, 32

microtask(s), 174

minification, 142, 168

mirror(s), 139, 170

API, 143

builder(s), 189

system(s) in reflectable, 167

Mitrovic, Srdjan, xvii

mixin(s), 36, 46

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

everything is an, 2, 13, 46

inspector(s), 169

object-based encapsulation, 59

object-capability model, 165

object-oriented programming, 68

pure, 1, 188

performance of, 190

Odersky, Martin, 91

operator(s), 9, 67, 124

optional typing, xi, xv, 1, 107

definition of, 3, 75

overriding, 3, 21

parameter(s)

named, 62

optional, 61

positional, 61

required, 61

parser(s)

combinator(s), 155

using reflectable, 166

part(s), 53

PEG(s), 155

point(s)

constant, 31

port(s), 175, 182

Posva, Ivan, xvii

prefix(es), 51

as objects, 188

required for deferred imports, 58

privacy, 48, 59, 177

promise(s), 177

in E, 185

property extraction, 122

and closure equality, 70

proxies, 68, 169, 178

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

reflection, xv, 34, 139, 188

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

statement, 4, 133, 178

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

security, 169, 177

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

setter(s), 66, 67

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 bool, 110, 111

disallowed for double, 110

switch statement, 129

symbol(s), 113, 168

and minification, 143

mapping to/from strings, 143

tablets, 1

TC52, xvii

thread(s), 175

tool(s), 188, 189

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

dynamic checking, 107, 178

generic, 107

optional, 187, 190

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

principle of, 46, 66

URI(s), 10, 176, 179

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

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.21.106.7