Erlang Programming

Erlang is a general purpose, concurrency-oriented functional programming language suited for fault-tolerant, distributed, soft real-time systems. It features strong dynamic typing, lightweight concurrency, eager evaluation and prolog like pattern matching. Erlang was developed in the 1980s at the Ericsson Computer Science Laboratory to address a then-unfulfilled need for telecommunications programming: a high-level, expressive language suitable for rapid development that offered the error recovery, concurrency, distribution and performance features required by telecommunications equipment.

Although its roots are in telecommunications, Erlang's unique features and extensive library make it suitable as a general-purpose programming language and well-suited to programming projects such as network servers, control systems and web development.

The Erlang language, together with an extensive library of applications and modules, a virtual machine and operating system, and a set of design principles establishing standard behaviors, comprise Erlang/OTP (OTP stands for Open Telecommunications Platform). Erlang/OTP is distributed as free software (under the Apache Public License) as well as a commercially supported version from Ericsson. Both distributions run on Microsoft Windows, VxWorks by Wind River, and many varieties of Unix.

Introduction

History
Overview
Getting Started
Quick Tips

Basic Erlang

Terms
Pattern Matching
Expressions
Functions
Guards
Modules
Errors
Operators
Processes and Messages
Timeouts
Macros
Techniques of Recursion
List Comprehensions
Comments
Variables

Basic OTP

Kernel and Stdlib
Distribution
Behaviors
Design Principles
Network Programming
Testing
Documentation

How To Do It Example

Intermediate Erlang

Records
Additional Types
Function Objects
Bitsyntax

Object Programming with Erlang

Example1
Using lists
Using regular expressions

Software Engineering

Debugging and Tracing
Performance and Optimization
Unit Testing with eunit

Advanced OTP

Database Programming
Using ets
Using mnesia
Using External Databases

Thinking in Parallel

Autonomous Agents
Parallel Programming with linda

Advanced Erlang

Making Parsers with yecc
Evaluation
Parse Transformation

Appendixes

Creating Web Applications with yaws
The document database CouchDB
Using Erlang with Emacs
Erlang Resources