Erlang
-
Upload
applicake -
Category
Technology
-
view
734 -
download
0
Transcript of Erlang
![Page 1: Erlang](https://reader031.fdocuments.us/reader031/viewer/2022020105/55878ee1d8b42a405d8b4671/html5/thumbnails/1.jpg)
Erlang – What is it?
- created by Joe Armstrong in 1986 at Ericcsson Telecom- based on Prolog
- functional language- dynamicly typed
Author: Mateusz Zawisza
![Page 2: Erlang](https://reader031.fdocuments.us/reader031/viewer/2022020105/55878ee1d8b42a405d8b4671/html5/thumbnails/2.jpg)
Where is it used?
- RabbitMQ (France Telecom)- Facebook Chat- GitHub (egitd)
- SampleDB (AWS)
Author: Mateusz Zawisza
![Page 3: Erlang](https://reader031.fdocuments.us/reader031/viewer/2022020105/55878ee1d8b42a405d8b4671/html5/thumbnails/3.jpg)
Types - variables
Var = 2.Var. %=> 2Var = 3. % this throws an error!
Author: Mateusz Zawisza
![Page 4: Erlang](https://reader031.fdocuments.us/reader031/viewer/2022020105/55878ee1d8b42a405d8b4671/html5/thumbnails/4.jpg)
Types - atoms
- same role as symbols in Ruby- usually start with lower-case
this_is_atom
Author: Mateusz Zawisza
![Page 5: Erlang](https://reader031.fdocuments.us/reader031/viewer/2022020105/55878ee1d8b42a405d8b4671/html5/thumbnails/5.jpg)
Types - lists
[1, 2, 3, 4]
Author: Mateusz Zawisza
![Page 6: Erlang](https://reader031.fdocuments.us/reader031/viewer/2022020105/55878ee1d8b42a405d8b4671/html5/thumbnails/6.jpg)
Types - tuples
{a, 2,"d"}.{ company, {name, "Applicake",
{address, "Krakow"}}
}.
Author: Mateusz Zawisza
![Page 7: Erlang](https://reader031.fdocuments.us/reader031/viewer/2022020105/55878ee1d8b42a405d8b4671/html5/thumbnails/7.jpg)
MatchingCompany = {company, {name, "Applicake"}, {address, "Krakow"} }.
{company, {name, Name}, {address, Address}} = Company.
Name %=> "Applicake" Address %=> "Krakow"
Author: Mateusz Zawisza
![Page 8: Erlang](https://reader031.fdocuments.us/reader031/viewer/2022020105/55878ee1d8b42a405d8b4671/html5/thumbnails/8.jpg)
Matching
[Head | Tail] = [1,2,3,4].
Head. %=> 1 Tail. %=> [2,3,4]
Author: Mateusz Zawisza
![Page 9: Erlang](https://reader031.fdocuments.us/reader031/viewer/2022020105/55878ee1d8b42a405d8b4671/html5/thumbnails/9.jpg)
Matching
[One, Two | Rest] = [1,2,3,4].
One. %=> 1 Two. %=> 2 Rest.%=> [3,4]
Author: Mateusz Zawisza
![Page 10: Erlang](https://reader031.fdocuments.us/reader031/viewer/2022020105/55878ee1d8b42a405d8b4671/html5/thumbnails/10.jpg)
Functions
-module(mirror_function). -export([mirror/1]).
mirror(Argument) -> Argument.
Author: Mateusz Zawisza
![Page 11: Erlang](https://reader031.fdocuments.us/reader031/viewer/2022020105/55878ee1d8b42a405d8b4671/html5/thumbnails/11.jpg)
Functions
-module(matching_function). -export([number/1]).
number(one) -> 1; number(two) -> 2; number(three) -> 3.
Author: Mateusz Zawisza
![Page 12: Erlang](https://reader031.fdocuments.us/reader031/viewer/2022020105/55878ee1d8b42a405d8b4671/html5/thumbnails/12.jpg)
Functions
Numbers = [1,2,3,4].
lists:map(fun(X) -> X+1 end, Numbers). %=> [2,3,4,5]
Author: Mateusz Zawisza
![Page 13: Erlang](https://reader031.fdocuments.us/reader031/viewer/2022020105/55878ee1d8b42a405d8b4671/html5/thumbnails/13.jpg)
Functions
map(F, [H|T]) -> [F(H) | map(F, T)]; map(F, []) -> [].
Author: Mateusz Zawisza
![Page 14: Erlang](https://reader031.fdocuments.us/reader031/viewer/2022020105/55878ee1d8b42a405d8b4671/html5/thumbnails/14.jpg)
Control sturctures...
case...
case Animal of "dog" -> underdoga; "cat" -> thundercat _ -> something_elseend.
Author: Mateusz Zawisza
![Page 15: Erlang](https://reader031.fdocuments.us/reader031/viewer/2022020105/55878ee1d8b42a405d8b4671/html5/thumbnails/15.jpg)
Control sturctures... if...
if X > 0 -> positive; X < 0 -> negative; true -> zeroend.
Author: Mateusz Zawisza
![Page 16: Erlang](https://reader031.fdocuments.us/reader031/viewer/2022020105/55878ee1d8b42a405d8b4671/html5/thumbnails/16.jpg)
Processes
Pid = spawn(fun module_name:function_name/0).
Pid ! "message".
Author: Mateusz Zawisza
![Page 17: Erlang](https://reader031.fdocuments.us/reader031/viewer/2022020105/55878ee1d8b42a405d8b4671/html5/thumbnails/17.jpg)
Processes
fuction_name() -> receive "message" -> io:format("Hi!"), function_name(); _ -> io:format("Whatever..."), function_name()end.
Author: Mateusz Zawisza