Top 1,000 Features Creators Events Podcasts Extensions Interviews Blog Explorer CSV

Erlang

< >

Erlang is an open source programming language created in 1986 by Joe Armstrong and Robert Virding and Mike Williams.

#35on PLDB 38Years Old 29kRepos
Download source code:
git clone https://github.com/erlang/otp
Homepage · REPL · Download · Source Code · Blog · Wikipedia · Subreddit · Twitter · FAQ · Release Notes · Docs

Erlang ( ER-lang) is a general-purpose, concurrent, functional programming language, as well as a garbage-collected runtime system. The term Erlang is used interchangeably with Erlang/OTP, or OTP, which consists of the Erlang runtime system, a number of ready-to-use components mainly written in Erlang, and a set of design principles for Erlang programs. The Erlang runtime system is known for its designs that are well suited for systems with the following characteristics: Distributed Fault-tolerant Soft real-time, Highly available, non-stop applications Hot swapping, where code can be changed without stopping a system. Read more on Wikipedia...


Example from Compiler Explorer:
-module(square). -export([square/1]). square(A) -> A*A.
Example from Riju:
-module(main). -export([main/0]). main() -> io:fwrite("Hello, world!\n").
Example from hello-world:
-module(erlang_hw). -export([start/0]). start() -> io:format("Hello World~n").
%% Hello World in Erlang -module(hello). -export([hello/0]). hello() -> io:format("Hello World!~n", []).
Example from Linguist:
#!/usr/bin/env escript -export([main/1]). main([]) -> io:format("Hello, World!~n").
Example from Wikipedia:
%% Second version -module(counter). -export([start/0, codeswitch/1]). start() -> loop(0). loop(Sum) -> receive {increment, Count} -> loop(Sum+Count); reset -> loop(0); {counter, Pid} -> Pid ! {counter, Sum}, loop(Sum); code_switch -> ?MODULE:codeswitch(Sum) end. codeswitch(Sum) -> loop(Sum).
Erlang Keywords
after and andalso begin bnot bor bsl bsr bxor case catch cond div end fun if let not of or orelse receive rem try when xor

Language features

Feature Supported Example Token
Standard Library
io:format("Hello, World!~n").
Integers
% [+-]?(?:[2-9]|[12][0-9]|3[0-6])#[0-9a-zA-Z]+
Floats
% [+-]?\d+.\d+
Conditionals
Functions
Print() Debugging io:format
Message Passing
Line Comments
% A comment
%
Macros
-define(Const, Replacement).
-define(Func(Var1,...,VarN), Replacement).
hasExports
-export([start/0, codeswitch/1]).
File Imports
-include("my_records.hrl").
-include("incdir/my_records.hrl").
-include("/home/user/proj/my_records.hrl").
-include("$PROJ_ROOT/my_records.hrl").
-include_lib("kernel/include/file.hrl").
Directives
-define(TIMEOUT, 200).
...
call(Request) ->
   server:call(refserver, Request, ?TIMEOUT).
-undef(Macro).
Comments
% hello world program
Shebang
#!/usr/bin/env escript
Strings
"hello world"
Case Insensitive Identifiers X
Semantic Indentation X
MultiLine Comments X

View source

- Build the next great programming language · About · Resources · Acknowledgements · Part of the World Wide Scroll