Contents
Part I An introduction to JoCaml
Chapter 1 Concurrent programming
1.1 Conventions
1.2 Basics
1.2.1 Simple channel declarations
1.2.2 Processes
1.2.3 More on channels
1.2.4 Synchronous channels
1.3 Join patterns
1.3.1 Basics
1.3.2 ML pattern matching in join patterns
1.3.3 Mixing asynchronous and synchronous channel definitions
1.4 Control structures
1.4.1 Some classical synchronization primitives
1.4.2 Timeout
1.4.3 Iterations
1.5 Data structures
1.5.1 A concurrent reference cell
1.5.2 A concurrent stack
1.5.3 Buffers
1.6 A serious example: connecting a producer with consumers
1.7 Modules
1.8 A word on typing
1.9 Exceptions
1.10 A complete example: controlling several remote shell executions
1.10.1 Realistic timeouts
1.10.2 Forking an Unix process under timeout control
1.10.3 Collecting results
Chapter 2 Distributed programming
2.1 The Distributed Model
2.1.1 The name-server
2.1.2 Running several programs in concert
2.1.3 Manage site termination
2.2 A complete example
2.2.1 Behavior of a client
2.2.2 Add and remove users
2.2.3 Connect two clients together
2.2.4 Build a chat room
2.3 Limitations
2.3.1 Code mobility
2.3.2 References and exceptions
2.3.3 Typing
Part II User Manual
Chapter 3 The JoCaml language
3.1 Lexical issues
3.2 Values
3.3 Types
3.4 Expressions
3.5 Processes
3.5.1 Basic processes
3.5.2 Composed processes
3.6 Join definitions
3.6.1 Informal semantics
3.6.2 Scopes
3.6.3 Asynchronous and synchronous channels
3.7 Module expressions
Chapter 4 JoCaml Tools
4.1 A few words on implementation(s)
4.2 Summary of tool modifications
4.3 Using
ocamlbuild
Chapter 5 The JoCaml library