Erlang Central

Difference between revisions of "Main Page"

From ErlangCentral Wiki

(Moved news and included all mailing lists)
Line 99: Line 99:
|style="color:#000; font-size:85%; margin-top:0; "|  
|style="color:#000; font-size:85%; margin-top:0; "|  
<h2 class="#bodyContent">Latest Wiki Changes</h2>
<h2 class="#bodyContent">Latest Wiki Changes</h2>
<rss_recent max=3></rss_recent>
<rss_recent max=3></rss_recent>

Revision as of 15:21, 30 August 2007

Your Erlang Community Site

Welcome to, the Erlang community site where you can read news and weblogs related to Erlang/OTP, discuss projects, issues and ideas with other Erlang developers, and read and publish articles and HowTos related to Erlang/OTP.

Trapexit News

<irss max=1 news=true></irss>

What is Erlang and OTP?

Erlang is a programming language and a runtime system with strong built-in support for concurrency, distribution and fault tolerance. Originally developed at Ericsson, Erlang was released as open source in 1998.

The Open Telecom Platform (OTP) is set of Erlang libraries and design principles providing middle-ware to develop distributed, fault tolerant, massively concurrent soft real-time systems.

Here is an example of Erlang code:

-define(TEMPLATE_0, "~s of beer on the wall, ~s of beer.~n"
                    "Go to the store and buy some more," 
                    "99 bottles of beer on the wall.~n").
-define(TEMPLATE_N, "~s of beer on the wall, ~s of beer.~n"
                    "Take one down and pass it around, ~s"
                    " of beer on the wall.~n~n").

create_verse(0)      -> 
    {0, io_lib:format(?TEMPLATE_0, phrase(0))};
create_verse(Bottle) -> 
    {Bottle, io_lib:format(?TEMPLATE_N, phrase(Bottle))}.

phrase(0)      -> ["No more bottles", "no more bottles"];
phrase(1)      -> ["1 bottle", "1 bottle", "no more bottles"];
phrase(2)      -> ["2 bottles", "2 bottles", "1 bottle"];
phrase(Bottle) -> 
     lists:duplicate(2,integer_to_list(Bottle) ++ " bottles") ++ 
                     [integer_to_list(Bottle-1) ++ " bottles"].
bottles() -> lists:reverse(lists:seq(0,99)).
sing() ->
    lists:foreach(fun spawn_singer/1, bottles()),
spawn_singer(Bottle) ->
    Pid = self(), 
    spawn(fun() -> Pid ! create_verse(Bottle) end).
sing_verse(Bottle) ->
	{_, Verse} when Bottle == 0 ->
	{N, Verse} when Bottle == N ->
	3000 ->
	    io:format("Verse not received after 3 seconds"
                      " - re-starting singer~n"),


Good places to start on

HowTo documents - Tutorials and Guides for Erlang developers
Erlang Cookbook - A collection of Erlang solutions to specific problems
Erlang Concepts - Articles dealing with specific Erlang aspects
Erlang Best Practices - Articles dealing with best practices in Erlang
Erlang Articles - Articles of interest to Erlang developers and testers
ErlangJobs - Erlang and Erlang related Jobs
Links to Erlang related sites outside Trapexit
RSS Feeds related to Erlang, including blogs and software development

Latest Forum Posts

<irss max=2></irss>
<irss max=2></irss>
<irss max=2></irss>

Latest Planet Entries

<rss_planet max=5></rss_planet>

Latest Wiki Changes

<rss_recent max=3></rss_recent>

Mailing Lists Posts

<irss max=1></irss>
<irss max=1></irss>
<irss max=1></irss>
<irss max=1></irss>
<irss max=1></irss>