Contents

Foreword

Preface

Acknowledgments

About the Author

Chapter 1 Introduction

1.1 Motivation

1.2 Design Principles

1.2.1 Everything Is an Object

1.2.2 Program to an Interface, not an Implementation

1.2.3 Types in the Service of the Programmer

1.3 Constraints

1.4 Overview

1.5 Book Structure

1.6 Related Work and Influences

Chapter 2 Objects, Interfaces, Classes and Mixins

2.1 Accessors

2.2 Instance Variables

2.3 Class Variables

2.4 Finals

2.5 Identity and Equality

2.6 Class and Superclass

2.7 Abstract Methods and Classes

2.8 Interfaces

2.9 Life of an Object

2.9.1 Redirecting Constructors

2.9.2 Factories

2.10 noSuchMethod()

2.11 Constant Objects and Fields

2.12 Class Methods

2.13 Instances, Their Classes and Metaclasses

2.14 Object and Its Methods

2.15 Mixins

2.15.1 Example: The Expression Problem

2.16 Related Work

2.17 Summary

Chapter 3 Libraries

3.1 The Top Level

3.2 Scripts

3.3 Privacy

3.4 Imports

3.5 Breaking Libraries into Parts

3.6 Exports

3.7 Diamond Imports

3.8 Deferred Loading

3.9 Related Work

3.10 Summary

Chapter 4 Functions

4.1 Parameters

4.1.1 Positional Parameters

4.1.2 Named Parameters

4.2 Function Bodies

4.3 Function Declarations

4.4 Closures

4.5 Invoking Methods and Functions

4.5.1 Cascades

4.5.2 Assignment

4.5.3 Using Operators

4.6 The Function Class

4.6.1 Emulating Functions

4.7 Functions as Objects

4.8 Generator Functions

4.8.1 Iterators and Iterables

4.8.2 Synchronous Generators

4.9 Related Work

4.10 Summary

Chapter 5 Types

5.1 Optional Typing

5.2 A Tour of Types

5.3 Interface Types

5.4 Types in Action: The Expression Problem, Typed

5.5 Generics

5.5.1 The Expression Problem with Generics

5.6 Function Types

5.6.1 Optional Positional Parameters

5.6.2 Named Parameters

5.6.3 Call() Revisited

5.7 Type Reification

5.7.1 Type Tests

5.7.2 Type Casts

5.7.3 Checked Mode

5.7.4 Reified Generics

5.7.5 Reification and Optional Typing

5.7.6 Types and Proxies

5.8 Malformed Types

5.9 Unsoundness

5.10 Related Work

5.11 Summary

Chapter 6 Expressions and Statements

6.1 Expressions

6.1.1 Literals

6.1.2 Identifiers

6.1.3 this

6.1.4 Constants

6.1.5 Creating Objects

6.1.6 Assignment

6.1.7 Extracting Properties

6.1.8 Method Access

6.1.9 Using Operators

6.1.10 Throw

6.1.11 Conditionals

6.2 Statements

6.2.1 Blocks

6.2.2 If

6.2.3 Loops

6.2.4 Try-Catch

6.2.5 Rethrow

6.2.6 Switch

6.2.7 Assert

6.2.8 Return

6.2.9 Yield and Yield-Each

6.2.10 Labels

6.2.11 Break and Continue

6.3 Summary

Chapter 7 Reflection

7.1 Introspection

7.1.1 Implications for Speed and Size

7.1.2 Example: Proxies

7.1.3 Example: Serialization

7.1.4 Example: Parser Combinators

7.2 Why Mirrors

7.3 Metadata

7.4 Reflection via Code Generation

7.5 Beyond Introspection

7.6 Related Work

7.7 Summary

Chapter 8 Asynchrony and Isolates

8.1 Asynchrony

8.2 Futures

8.2.1 Consuming Futures

8.2.2 Producing Futures

8.2.3 Scheduling

8.3 Streams

8.4 Isolates

8.4.1 Ports

8.4.2 Spawning

8.4.3 Security

8.5 Example: Client-Server Communication

8.5.1 Promise: A Brighter Future

8.5.2 Isolates as Distributed Objects

8.6 Asynchronous Functions

8.6.1 Await

8.6.2 Asynchronous Generators

8.6.3 Await-For loops

8.7 Related Work

8.8 Summary

Chapter 9 Conclusion

9.1 Optional Typing

9.2 Object Orientation

9.3 Reflection

9.4 Tooling

9.5 Summary

Bibliography

Index

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

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