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

Popular Modules

 * 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