Erlang Introduction Bcberlin3

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    3 Favorites

    Erlang Introduction Bcberlin3 - Presentation Transcript

    1. Erlang Introduction 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. Syntax 9
    10. Hello User 10
    11. erl 11
    12. $ erl 1> | 12
    13. 1> io:format(\"Hello User~n\", []). Hello User ok 13
    14. 2> 1 + 2008. 2009 14
    15. 3> 1 + 2 + 3. 6 15
    16. 10> 1 + 2 * 3. 7 11> 2 * 3 + 1. 7 12> (1 + 2) * 3. 9 16
    17. 13> 3/0. ** exception error: bad argument in an arithmetic expression in operator '/'/2 called as 3 / 0 17
    18. 4> catch 3/0. {'EXIT',{badarith,[{erlang,'/',[3,0]}, {erl_eval,do_apply,5}, {erl_eval,expr,5}, {shell,exprs,6}, {shell,eval_exprs,6}, {shell,eval_loop,3}]}} 18
    19. 15> \"Erlang intro\". \"Erlang intro\" 19
    20. 35> \"abc\" ++ \"def\". \"abcdef\" 20
    21. 27> [72, 101, 108, 108, 111]. \"Hello\" 21
    22. 27> [$E, $r, $l, $a, $n, $g]. \"Erlang\" 22
    23. Atom 23
    24. 6> atom. atom 24
    25. ok true false kernel erlang 'EXIT' 'Name' 25
    26. 6> is_atom(zbar). true 9> 1 == 3. false 26
    27. Use Functions 27
    28. 36> lists:reverse(\"nilreB olleH\"). \"Hello Berlin\" 28
    29. 1> Mod = lists. lists 2> Fn = reverse. reverse 3> Mod:Fn(\"tac\"). \"cat\" 29
    30. 5> Mod:(list_to_atom(\"reverse\"))(\"ate\"). \"eta\" 30
    31. 37> apply(lists, reverse, [\"nilreB\"]). \"Berlin\" 31
    32. 39> Fn = fun lists:reverse/1. #Fun<lists.reverse.1> 40> apply(Fn, [\"olleH\"]). \"Hello\" 32
    33. Variables 33
    34. 48> N = 1. 1 49> N = 2. ** exception error: no match of right hand side value 2 50> N = 1. 1 34
    35. Pattern matching and Variables 35
    36. 1> Coffee = harem:espresso(). {espresso, \"Harem\", orange} 2> {espresso, _, Crema} = Coffee. {espresso, \"Harem\", orange} 3> Crema. orange 36
    37. Data Structures 37
    38. [101, left, right, $a, [0, 1, 2], \"abc\"] 38
    39. 5> L = [101, left, right, \"abc\"]. [101,left,right,\"abc\"] 6> lists:nth(1,L). 101 39
    40. 7> lists:nthtail(1, L). [left,right,\"abc\"] 40
    41. 29> [66, 101 | \"rlin\"]. \"Berlin\" 41
    42. 38> [First, Sec | Rest] = \"Rest\". \"Rest\" 39> First. 82 40> [First]. \"R\" 41> Sec. 101 42> [Sec]. \"e\" 42
    43. Strings sind Listen 43
    44. Tuple 44
    45. {1, 2, 3} 45
    46. 1> P = {adam,24,{july,29}}. {adam,24,{july,29}} 2> element(1,P). adam 46
    47. 3> element(3,P). {july,29} 47
    48. 4> P2 = setelement(2,P,25). {adam,25,{july,29}} 48
    49. 5> tuple_size(P). 3 49
    50. Binaries 50
    51. <<13, 10, 13, 10>> 51
    52. <<\"GET / HTTP/1.1\">> 52
    53. web_request(Req) -> Req:ok({\"text/html\", <<\"<html> <head><title> Hello Berlin </title></head> <body> Hello Berlin </body> </html>\">>}). 53
    54. 54
    55. 0000000 d4 c3 b2 a1 02 00 04 00 00 00 00 00 00 00 00 00 0000010 60 00 00 00 01 00 00 00 07 aa f7 48 b4 32 08 00 0000020 4e 00 00 00 4e 00 00 00 00 14 6c 62 ef 18 00 19 0000030 e3 07 c0 bc 08 00 45 00 00 40 30 0d 40 00 40 06 0000040 3e 4e c0 a8 b2 cb d1 55 87 93 cd b9 00 50 a1 59 0000050 7f 98 00 00 00 00 b0 02 ff ff ad c0 00 00 02 04 0000060 05 b4 01 03 03 03 01 01 08 0a 27 c0 a6 25 00 00 0000070 00 00 04 02 00 00 0000076 55
    56. <<Version:4, IHLen:4, TOService:8, TotalLength:16, Id:16, Flags:3, FragOffset:13, Ttl:8, Protocol:8, HeaderChecksum:16, SourceAddr:32, DestAddr:32>> = H. 56
    57. 43> A = 0. 0 44> B = 8. 8 45> C = 15. 15 46> Msg = <<A:9, B:12, C:16>>. <<0,0,64,0,15:5>> 57
    58. dict array sets sofs digraph 58
    59. Module file 59
    60. -module(forest). -export([tree/1, tree/2]). -include_lib(\"kernel/include/ flora.hrl\"). %% External API tree(Age) -> {tree, Age}. tree(Age, Kind) -> {tree, Age, Kind}. 60
    61. forest.erl 61
    62. $ erlc forest.erl 62
    63. forest.beam 63
    64. Define Functions 64
    65. double(X) -> 2 * X. greet(Name) -> io:fwrite(\"Hallo ~p~n\", [Name]), ok. 65
    66. 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 66
    67. fib(0) -> 0; fib(1) -> 1; fib(N) when is_integer(N) -> fib(N-1) + fib(N-2). 67
    68. For Want Of Loop 68
    69. Recursion 69
    70. vowels(Text) -> vowels(Text, []). vowels([H|T], Acc) -> Acc1=case member(H, \"aeiuo\") of true -> [H | Acc]; false -> Acc end, vowels(T, Acc1); vowels([], Acc) -> reverse(Acc). 70
    71. foo(N) when N > 1 -> ok. 71
    72. bar(N) when is_list(N), length(N) -> 72
    73. baz(I) when I > 0, I < 9 -> 73
    74. quux(K) when I =< 0 or I >= 9 -> 74
    75. double(N) when is_number(N) -> N * 2; double(N) when is_list(N) -> N ++ N. 75
    76. process(\"/customer\" ++ QString) -> customer(QString); 76
    77. process(\"/customer\" ++ QString) -> customer(QString); process(\"/employee\" ++ QString) -> employee(QString); process(Any) -> ok. 77
    78. Concurrent programming 78
    79. Shared state 79
    80. Message passing 80
    81. 81
    82. spawn(Fun) 82
    83. Pid = spawn(Fun) 83
    84. Pid ! {lookup, {name, \"Carl\"}} 84
    85. receive {lookup, Query} -> query(Query) end 85
    86. receive {lookup, Query} -> query(Query); {update, Update} -> update(Update) end 86
    87. receive Any -> Any end 87
    88. Pid ! Msg. receiver ! Msg. {receiver, 'notos@nugg.ad'} ! Msg. 88
    89. link(Pid) 89
    90. process_flag(trap_exit, true) 90
    91. {'EXIT', From, Reason} 91
    92. 1> self(). <0.89.0> 92
    93. Distributed Erlang 93
    94. spawn(Node, Fun) 94
    95. Node = 'serv@flomac'. 95
    96. node() 96
    97. nodes() 97
    98. net_adm:ping(Node) 98
    99. Function Functions 99
    100. lists 100
    101. map foldl filter 101
    102. lists:map(Fun, List) 102
    103. L = [1,2,3,4,5], L1 = lists:map(fun(E) -> E * 2 end, L). [2,4,6,8,10] 103
    104. lists:foldl(Fun, Acc, List) 104
    105. L = [1,2,3,4,5], L1 = lists:foldl(fun(E, Acc) -> Acc + E end, L). 15 105
    106. lists:filter(Fun, List) 106
    107. L = [1,2,3,4,5], L1 = lists:filter(fun(E) -> E rem 2 == 0 end, L). [2,4] 107
    108. 108
    109. rpc:pmap({Module, Function}, ExtraArgs, List2) 109
    110. OTP 110
    111. 111
    112. Supervision Tree Behaviours Applications Releases Up- & Downgrades 112
    113. 113
    114. {ch3, start_link, []} 114
    115. init(_Args) -> {ok, {{one_for_one, 1, 60}, [{ch3, {ch3, start_link, []}, permanent, brutal_kill, worker, [ch3]}] }}. 115
    116. 116
    117. Behaviour 117
    118. Base Class Impl 118
    119. Behaviour Callback 119
    120. Library 120
    121. kernel erlang code file rpc application io inet error_logger 121
    122. stdlib math dict filename sets string lists proplists dets regexp random shell array queue timer gen_server 122
    123. 123
    124. Do stuff 124
    125. Unit Tests 125
    126. succeed() -> ok. fail() -> throw(failed). succeeding_test() -> succeed(). failing_test() -> fail(). 126
    127. succeeding_assert_test_() -> ?_assert(1 > 0). failing_assert_test_() -> ?_assert(0 > 1). succeeding_error_test_() -> ?_assertError(foo, erlang:error(foo)). failing_error_test_() -> ?_assertError(foo, erlang:throw(foo)). 127
    128. File IO 128
    129. {ok, Binary} = file:read_file(Filename) 129
    130. {ok, Terms} = file:consult(Filename) 130
    131. Macros 131
    132. ?MODULE ?LINE -define(OK, \"200\"). ?OK -define(trace(A), ...) ?trace 132
    133. Hello world 133
    134. $ sudo port install mochiweb $ escript /opt/local/share/scripts/ \\ new_mochiweb.erl my \\ app$ cd myapp ; make $ sh start-dev.sh $ open localhost:8000 134
    135. 135
    136. 136
    137. 536 Seiten Juli '07 137
    138. 138
    139. 139
    140. C. Florian Ebeling florian.ebeling@gmail.com florian.ebeling@nugg.ad @febeling 140
    141. Record 141
    142. -record(person, {name, age}). 142
    143. .hrl 143
    144. new(Name, Age) -> #person{name=Name, age=Age}. 144
    145. name(P) -> P#person.name. 145
    146. rename(P, NewName) -> P#person{name=Name}. 146
    147. Where Next? 147
    148. 400 Seiten März '09 148
    149. 500 Seiten Mai '09 149
    150. ports edoc debugger erlang-mode distel type specs dialyzer mochiweb yaws Lisp Flavoured Erlang Reia 150
    151. OTP Behaviours 151
    152. gen_server 152
    153. gen_fsm 153
    154. supervisor 154
    155. -module(sup). -behaviour(supervisor). -export([start_link/0]). -export([init/1]). start_link() -> supervisor:start_link(sup, []). init(_Args) -> ... 155
    156. application 156
    157. filename:dirname( code:which(?MODULE)) 157
    158. 11> {ok,File} = file:open(\"PROJECTS\", [read]). {ok,<0.92.0>} 13> io:get_line(File, []). \"Intro Erlang (am Mi., 17.10.08)\\n\" 15> file:close(File). 158

    + guesta3202guesta3202, 2 years ago

    custom

    1864 views, 3 favs, 0 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 1864
      • 1864 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 3
    • Downloads 33
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories