Similar presentations:
Функциональное программирование. Лекция 1
1.
Функциональноепрограммирование
Лекция 1
2.
Источники информации• Лекции
• Erlang.org
• Книжки
• Ответы на внятные вопросы по почте
[email protected]
3.
Источники информации4.
Источники информации5.
Целые числа• -234
• 0
• 10
• 1000000000
• 2#1010
• 16#ЕА
6.
Интерпретатор Erlang7.
Интерпретатор Erlang1> -234.
-234
2> 2#1010.
10
3> $А.
65
4> 54>
4> 4.
1
4> 5-.
* 1: syntax error before: '.'
5> q().
8.
Действительные числа17.368
-56.654
1.234Е-10
0.0000000001234
9.
Арифметические операции10.
Арифметические операции1> +1.
1
2> -1.
-1
3> 11 div 5.
2
4> 11 rem 5.
1
5> (12 + 3) div 5.
3
б> (12 + 3)/5.
3.00000
11.
Арифметические операции7> 2*2*3.14.
12.5600
8> 1+2+3+5+8 .
19
9> 2*2 + -3*3.
-5
10> 1/2 + (2/3 + (3/4 + (4/5))) - 1.
1.71667
13> 2.0 rem 3.
** exception error: bad argument in an arithmetic expression
in operator rem/2
called as 2.0 rem 3
12.
АтомыJanuary
fooBar
alfa21
start
withlowercase
node@ramone
true
false
13.
Атомы'January'
'a space'
'Anything inside quotes{}#@ \n\012'
'[email protected]'
14.
Атомы1> abc.
abc
2> 'abc_123_CDE'.
abc_123_CDE
3> 'using spaces'.
'using spaces'
4> 'lowercaseQuote'.
lowercaseQuote
5> '\n\n' .
'\n\n'
15.
Атомы6> '1
6> 2
б> 3
6> 4'.
‘1\n2\n3\n4'
7> 'funny characters in quotes: !@#$%л&*()-+'.
'funny characters in quotes: !@#$%л&*()-+'
8> '1+2+3'.
'1+2+3'
9> 'missing a full stop.'
9> .
'missing a full stop.'
16.
Логические значения1> 1==2.
false
2> 1<2.
true
3> a>z.
false
5> is_boolean(9+6).
false
б> is_boolean(true).
true
17.
Логические операторы18.
Логические операторы1> not((1<3) and (2==2)).
false
2> not((1<3) or (2==2)).
false
3> not((1<3) xor (2==2)).
true
19.
Кортежи{123, bed}
{123, def, abc}
{abc, {def, 123}, ghi}
{}
{person, 'Joe', 'Armstrong'}
{person, 'Mike', 'Williams'}
{123}
20.
Функции для работы с кортежами1> tuple_size({abc, {def, 123}, ghi}).
3
2> element(2,{abc, {def, 123}, ghi}).
{def,123}
3> setelement(2, {abc, {def, 123}}, def).
{abc,def}
4> {1,2}<{1,3}.
true
5> {2,3}<{2,3}
false
6> {1,2}=={2,3}
false
21.
Списки[January, february, march]
[a, [b,[c,d,e],f] , g]
[]
[{person,'Joe','Armstrong'},{person,'Robert','Vir
ding'},{person,'Mike','Williams'}]
[72,101,108,108,111,32,87,111,114,108,100]
[$H,$e,$l,$l,$o,$ ,$W,$o,$r,$l,$d]
22.
Символы и строки1> $А.
65
2> $А + 32.
97
3> $а.
97
4> [65,66,67].
"ABC"
5> [67,$А+32,$А+51].
"Cat"
6> [72,101,108,108,111,32,87,111,114,108,100].
"Hello World"
7> [$H,$e,$l,$l,$o,$ ,$W,$o,$r,$l,$d].
"Hello World"
23.
Внутреннее представление списков24.
Многоуровневый список25.
Создание и обработка списков[Элемент | Список] или [ ]
• [one, two, three, four]
• [one, two, three, four|[] ]
• [one, two|[three, four]]
• [one, two|[three|[four|[]] ]
• [one|[two|[three|[four| []]]] ]
26.
Создание и обработка списков1> lists:max([l,2,3]).
3
2> lists:reverse([1,2,3]).
[3,2,1]
3> lists:sort([2,l,3]).
[1,2,3]
4> lists:sum([3,4,10,7,9]).
33
7> lists:delete(2,[l,2,3,2,4,2]).
[1,3,2,4,2]
5> lists:last([l,2,3]).
3
8> lists:member(5,[1,24]).
False
9> hd([1,2,3,4]).
1
27.
Создание и обработка списков10> tl([1,2,3,4]).
[2,3,4]
11> lists:member(24,[1,24]).
True
12> lists:nth(2,[3,4,16,7,9]).
4
13> lists:length([l,2,3]).
** exception error: undefined function lists:length/1
14> length([l,2,3]).
3
28.
Создание и обработка списков1> [monday, tuesday, Wednesday].
[monday,tuesday,Wednesday]
2>
2> [1|[2|[3|[]]]].
[1,2,3]
3> [a, mixed, "list", {with,4}, 'data types'].
[a,mixed,"list",{with,4},'data types']
4> [l,2,3]++[4,5,6].
[1,2,3,4,5,6]
5> [l,2,2,3,4,4]--[2,4].
[1,2,3,4]
6> "A long string I have split "
6> "across several lines".
"A long string I have split across several lines"
29.
Создание и обработка списков7> [1,2,3]-- [1,2]-- [1,2]
[1,2,3]
8> ([1,2,3]--- [1,3])--- [1,2]
[]