Erlang: аналогии для понимания циклов

Пришел в голову интересный способ объяснения циклов на Erlang:

Пусть А – массив:

A = [1, 2, 3, 4, 5].

Надо пройтись по каждому элементу массива и увеличить его на 1. На обычных языках программирования это делается примерно так (python):

for i in range(len(A)):
   A[i] += 1

PHP

foreach ($A as $i=>$value)
    $A[i]++;

А теперь эквивалент на Erlang:

A2 = lists:map(
   fun(Elem) ->
      Elem + 1
   end, A).

На Erlang мы использовали анонимную функцию, которая в качестве аргумента принимает одно значение и возвращает его, увеличенным на 1. Также мы ввели новый массив A2, т.к. на Erlang нельзя переопределять единожды присвоенное значение переменной. Да, по сути в Erlang переменных нет =), потому и нет классических циклов. Поэтому для реализации циклов используют или рекурсию, или проход по элементам списка с помощью функций lists:map/2, lists:foldl/3 и др.