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
77
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
A better future with KSS
kneath
239
17k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.4k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
Six Lessons from altMBA
skipperchong
28
4k
Thoughts on Productivity
jonyablonski
69
4.8k
The Cult of Friendly URLs
andyhume
79
6.5k
Music & Morning Musume
bryan
46
6.7k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.9k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
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