-
Chapter 1 Introduction
-
Why Should I Use Erlang?
-
The History of Erlang
-
Erlang’s Characteristics
-
Erlang and Multicore
-
Case Studies
-
How Should I Use Erlang?
-
-
Chapter 2 Basic Erlang
-
Integers
-
The Erlang Shell
-
Floats
-
Atoms
-
Booleans
-
Tuples
-
Lists
-
Term Comparison
-
Variables
-
Complex Data Structures
-
Pattern Matching
-
Functions
-
Modules
-
Exercises
-
-
Chapter 3 Sequential Erlang
-
Conditional Evaluations
-
Guards
-
Built-in Functions
-
Recursion
-
Runtime Errors
-
Handling Errors
-
Library Modules
-
The Debugger
-
Exercises
-
-
Chapter 4 Concurrent Programming
-
Creating Processes
-
Message Passing
-
Receiving Messages
-
Registered Processes
-
Timeouts
-
Benchmarking
-
Process Skeletons
-
Tail Recursion and Memory Leaks
-
A Case Study on Concurrency-Oriented Programming
-
Race Conditions, Deadlocks, and Process Starvation
-
The Process Manager
-
Exercises
-
-
Chapter 5 Process Design Patterns
-
Client/Server Models
-
A Process Pattern Example
-
Finite State Machines
-
Event Managers and Handlers
-
Exercises
-
-
Chapter 6 Process Error Handling
-
Process Links and Exit Signals
-
Robust Systems
-
Exercises
-
-
Chapter 7 Records and Macros
-
Records
-
Macros
-
Exercises
-
-
Chapter 8 Software Upgrade
-
Upgrading Modules
-
Behind the Scenes
-
Upgrading Processes
-
The .erlang File
-
Exercise
-
-
Chapter 9 More Data Types and High-Level Constructs
-
Functional Programming for Real
-
Funs and Higher-Order Functions
-
List Comprehensions
-
Binaries and Serialization
-
References
-
Exercises
-
-
Chapter 10 ETS and Dets Tables
-
ETS Tables
-
Dets Tables
-
A Mobile Subscriber Database Example
-
Exercises
-
-
Chapter 11 Distributed Programming in Erlang
-
Distributed Systems in Erlang
-
Distributed Computing in Erlang: The Basics
-
The epmd Process
-
Exercises
-
-
Chapter 12 OTP Behaviors
-
Introduction to OTP Behaviors
-
Generic Servers
-
Supervisors
-
Applications
-
Release Handling
-
Other Behaviors and Further Reading
-
Exercises
-
-
Chapter 13 Introducing Mnesia
-
When to Use Mnesia
-
Configuring Mnesia
-
Transactions
-
Partitioned Networks
-
Further Reading
-
Exercises
-
-
Chapter 14 GUI Programming with wxErlang
-
wxWidgets
-
wxErlang: An Erlang Binding for wxWidgets
-
A First Example: MicroBlog
-
The MiniBlog Example
-
Obtaining and Running wxErlang
-
Exercises
-
-
Chapter 15 Socket Programming
-
User Datagram Protocol
-
Transmission Control Protocol
-
The inet Module
-
Further Reading
-
Exercises
-
-
Chapter 16 Interfacing Erlang with Other Programming Languages
-
An Overview of Interworking
-
Interworking with Java
-
C Nodes
-
Erlang from the Unix Shell: erl_call
-
Port Programs
-
Library Support for Communication
-
Linked-in Drivers and the FFI
-
Exercises
-
-
Chapter 17 Trace BIFs, the dbg Tracer, and Match Specifications
-
Introduction
-
The Trace BIFs
-
Tracing Calls with the trace_pattern BIF
-
The dbg Tracer
-
Match Specifications: The fun Syntax
-
Match Specifications: The Nuts and Bolts
-
Further Reading
-
Exercises
-
-
Chapter 18 Types and Documentation
-
Types in Erlang
-
TypEr: Success Types and Type Inference
-
Documentation with EDoc
-
Exercises
-
-
Chapter 19 EUnit and Test-Driven Development
-
Test-Driven Development
-
EUnit
-
The EUnit Infrastructure
-
Testing State-Based Systems
-
Testing Concurrent Programs in Erlang
-
Exercises
-
-
Chapter 20 Style and Efficiency
-
Applications and Modules
-
Processes and Concurrency
-
Stylistic Conventions
-
Coding Strategies
-
Efficiency
-
And Finally...
-
-
Appendix Using Erlang
-
Getting Started with Erlang
-
Tools for Erlang
-
Where to Learn More
-
-
Colophon
- Title:
- Erlang Programming
- By:
- Francesco Cesarini, Simon Thompson
- Publisher:
- O'Reilly Media
- Formats:
-
- Ebook
- Safari Books Online
- Print Release:
- June 2009
- Ebook Release:
- June 2009
- Pages:
- 496
- Print ISBN:
- 978-0-596-51818-9
- | ISBN 10:
- 0-596-51818-8
- Ebook ISBN:
- 978-0-596-80453-4
- | ISBN 10:
- 0-596-80453-9
The animal on the cover of Erlang Programming is a brush-tailed rat kangaroo (Bettongia penicillata). The brush-tailed rat kangaroo is a small mammal found in western and southern Australia. It is a cross between a rat and a small wallaby, and although some of its features are reminiscent of a rat, it is not a rodent and is instead classified as a marsupial. In south Australia, they are found in semi-arid scrublands and grasslands; in western Australia, they prefer eucalyptus forests containing a vegetative layer of tussock grass, low woody scrub, and occasional bare patches of ground. They once inhabited more than 60% of the Australian mainland, but now they inhabit less than 1%.
Brush-tailed rat kangaroos have an unusual mammalian diet that consists of bulbs, tubers, seeds, insects, resins, and underground fungi; they do not drink water or eat green plants. Although fungi are not considered a good food source for mammals in general, they provide the nutrients necessary for the brush-tailed rat-kangaroo's health.
The kangaroos' coats are yellowish-gray in color, their feet are pale brown and have hairs that bristle, and their long tails have a prominent black crest. Their tails are also useful: brush-tailed rat kangaroos are able to curl their tails to carry bundles of material to build their nests. They are relatively slow-moving creatures, but are able to hop away quickly when disturbed.
Brush-tailed rat kangaroos are extremely nocturnal. During the day they rest in well-constructed, hidden nests made up of grass and shredded bark. They appear to be solitary except when ready to mate.
Mating occurs year round, and females give birth to one young after a gestation period of 21 days. The newborn remains in the mother's pouch for about 98 days, and then stays in a nest until a new infant is born. As with many other kangaroos, the brushtailed rat kangaroo mates shortly after giving birth and can keep embryos in a state of dormancy until they are needed.
The cover image is from Cassell's Natural History. The cover font is Adobe ITC Garamond. The text font is Linotype Birka; the heading font is Adobe Myriad Condensed; and the code font is LucasFont's TheSansMonoCondensed.
