Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
A Sneak Peek into Erlang
Search
Enrique Fernández
January 29, 2015
0
80
A Sneak Peek into Erlang
15 minutes introduction to Erlang preceding a ~45 minutes programming session.
Enrique Fernández
January 29, 2015
Tweet
Share
More Decks by Enrique Fernández
See All by Enrique Fernández
Metaprogramming in Erlang
efcasado
1
200
Deploying Erlang applications on the Cloud using Wombat
efcasado
0
380
Hands on OpenStack
efcasado
1
130
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1032
470k
Documentation Writing (for coders)
carmenintech
77
5.3k
Accessibility Awareness
sabderemane
0
53
A better future with KSS
kneath
240
18k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.1k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
0
3.4k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
100
The Language of Interfaces
destraynor
162
26k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
200
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
The Pragmatic Product Professional
lauravandoore
37
7.1k
The Curse of the Amulet
leimatthew05
1
8.7k
Transcript
Erlang Solutions Ltd. © 1999-2015 Erlang Solutions Ltd. A Sneak
Peek into Erlang Stockholm EUG, January 2015
© 1999-2015 Erlang Solutions Ltd. • Enrique Fernández - Software
Engineer - Working with Erlang since 2011 - MSc. Computer Science, URV, Spain - Research Associate, URV, Spain (~2.5 years) - Ericsson Research, Sweden (~1.5 years) - Erlang Solutions, Sweden (2+ years) • Contact:
[email protected]
Speaker 2
© 1999-2015 Erlang Solutions Ltd. You 3 • No Erlang
experience required • No Functional Programming experience required • Should have basic programming skills • Eager to learn some Erlang!
© 1999-2015 Erlang Solutions Ltd. Objectives • Get you started
with Erlang • Solve the first 10 exercises from “99 haskell problems” using Erlang • Have some fun 4
© 1999-2015 Erlang Solutions Ltd. Hello, Erlangers! -module(hello). -export([hello_world/1]). hello_world(X)
-> io:format(“Hello, ~s!~n”, [X]). 5 module name exported functions function definition File: src/hello.erl
© 1999-2015 Erlang Solutions Ltd. The Erlang Compiler (a.k.a. erlc)
6 erlc -o ebin src/hello.erl Erlang compiler Source file Compiler options http://www.erlang.org/doc/man/erlc.html
© 1999-2015 Erlang Solutions Ltd. The Erlang Emulator (a.k.a. erl)
7 erl -pa ebin Erlang/OTP 17 [erts-6.1] [source-d2a4c20] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] Eshell V6.1 (abort with ^G) 1> hello:hello_world("Erlangers"). Hello, Erlangers! ok 2> Erlang emulator Emulator options http://www.erlang.org/doc/man/erl.html
© 1999-2015 Erlang Solutions Ltd. Concurrent Programming (in Erlang) 8
erl -S 1 Erlang/OTP 17 [erts-6.1] [source-d2a4c20] [smp:1:1] [async- threads:10] [hipe] [kernel-poll:false] Eshell V6.1 (abort with ^G) 1> Loop = fun Loop(X) -> io:format("~p Says: ~p~n", [self(), X]), Loop(X) end. #Fun<erl_eval.30.90072148> 2> [spawn(fun() -> Loop(X) end) || X <- ["A", "B", "C", "D"]]. <0.49.0> Says: "A" <0.50.0> Says: "B" <0.51.0> Says: "C" <0.52.0> Says: "D"
© 1999-2015 Erlang Solutions Ltd. Concurrent Programming (in Erlang) 9
erl -S 2 Erlang/OTP 17 [erts-6.1] [source-d2a4c20] [smp:2:2] [async- threads:10] [hipe] [kernel-poll:false] Eshell V6.1 (abort with ^G) 1> Loop = fun Loop(X) -> io:format("~p Says: ~p~n", [self(), X]), Loop(X) end. #Fun<erl_eval.30.90072148> 2> [spawn(fun() -> Loop(X) end) || X <- ["A", "B", "C", "D"]]. <0.49.0> Says: "A" <0.52.0> Says: "D" <0.50.0> Says: "B" <0.51.0> Says: "C"
© 1999-2015 Erlang Solutions Ltd. Concurrent Programming (in Erlang) 10
Erlang/OTP 17 [erts-6.1] [source-d2a4c20] [smp:8:8] [async- threads:10] [hipe] [kernel-poll:false] Eshell V6.1 (abort with ^G) 1> spawn(fun() -> receive {From, X} -> From ! lists:reverse(X) end end). <0.34.0> 2> pid(0,34,0) ! {self(), "Hello, Erlangers!”} {<0.32.>, "Hello, Erlangers!”} 3> flush(). Shell got "!sregnalrE ,olleH" ok
© 1999-2015 Erlang Solutions Ltd. Let’s Get Started 11 git
clone https://github.com/efcasado/EUGSTHLM-99erlproblems -b pt1 cd EUGSTHLM-99erlproblems make