Skip to content

Commit

Permalink
Исправления в главе 2.2
Browse files Browse the repository at this point in the history
Исправления из прошлых коммитов
  • Loading branch information
dyp2000 committed Mar 23, 2015
1 parent ef730e4 commit 04565af
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 4 deletions.
Binary file modified pdf/fullbook.pdf
Binary file not shown.
8 changes: 4 additions & 4 deletions ru/fullbook.md
Original file line number Diff line number Diff line change
Expand Up @@ -1703,7 +1703,7 @@ X | true | *Успех*. Х -> true
В нашем случае, `Head` была шаблоном `{What,N}`. Первая клауза срабатывает в случае, когда в нее передается непустой список. Она отделяет от него первый элемент ("голову"), что-то с ним делает, и потом функция вызывает саму себя для оставшейся части списка ("хвоста"). Вторая клауза срабатывает, когда полученный список пуст (`[]`).

На самом деле, функция `total/1` делает две разные вещи. Во-первых, она находит цену каждого элемента в списке, и, потом, складывает все их значения. Мы можем переписать функцию `total` таким образом, что бы разделить получение значения каждого элемента и сложение этих значений.
Получившийся код будет более ясным и простым для понимания. Чтобы сделать это, мы напишем две небольшие функции для работы с списками и назовем их sum и map. Но до того, как мы поговорим об этом, давайте немного познакомимся с анонимными функциями `funs`. После этого мы напишем наши функции `sum` и `map`, а затем улучшим нашу функцию `total`.
Получившийся код будет более ясным и простым для понимания. Чтобы сделать это, мы напишем две небольшие функции для работы со списками и назовем их sum и map. Но до того, как мы поговорим об этом, давайте немного познакомимся с анонимными функциями `funs`. После этого мы напишем наши функции `sum` и `map`, а затем улучшим нашу функцию `total`.

## 3.3. Функции с одинаковыми именами и различной арности (arity)

Expand Down Expand Up @@ -2035,7 +2035,7 @@ X | true | *Успех*. Х -> true
2> [{Name, 2*Number} || {Name, Number} <- Buy].
[{oranges,8},{newspaper,2},{apples,20},{pears,12},{milk,6}]

Отметим дополнительно, что набор (кортеж) {Name, Number} с права от знака `||` - это *образец (паттерн), которому сопоставляется каждый элемент из списка Buy. А набор (кортеж) слева от знака `||` - `Name, 2*Number}` - называется* `конструктором`.
Отметим дополнительно, что набор (кортеж) {Name, Number} справа от знака `||` - это *образец (паттерн), которому сопоставляется каждый элемент из списка Buy. А набор (кортеж) слева от знака `||` - `Name, 2*Number}` - называется* `конструктором`.

Предположим теперь, что мы хотим посчитать общую стоимость всех элементов в исходном нашем списке. Это можно сделать следующим образом:

Expand Down Expand Up @@ -2579,7 +2579,7 @@ reference(X), tuple(X), и binary(X). Эти проверки означают
Сообщения Эрланга об ошибках и реакции на них. До того как мы глубже
погрузимся в последовательное программирование, давайте кратко
рассмотрим эту тему. Это может показаться неожиданным отклонением от
темы, но, если наша цель - писать надежные и распределенные выражения,
темы, но, если наша цель - писать надежные и распределенные приложения,
то понимание того, как обрабатываются ошибки становится просто
необходимым.

Expand Down Expand Up @@ -2790,7 +2790,7 @@ ExceptionType отсутствует, то, по-умолчанию, счита
Val -> Val
catch
...
end
end

Аналогично, и раздел after может быть пропущен.

Expand Down

0 comments on commit 04565af

Please sign in to comment.