Erklärung der Listen: Fold-Funktion

Ich lerne immer mehr über Erlang und habe in letzter Zeit ein Problem. Ich lese überfoldl(Fun, Acc0, List) -> Acc1 Funktion. Ich habe das Tutorial learnyousomeerlang.com verwendet und es gab ein Beispiel (Beispiel zum Umgekehrten Polnischen Notationsrechner in Erlang):

%function that deletes all whitspaces and also execute
rpn(L) when is_list(L) ->
  [Res] = lists:foldl(fun rpn/2, [], string:tokens(L," ")),
  Res.

%function that converts string to integer or floating poitn value
read(N) ->
  case string:to_float(N) of
    %returning {error, no_float} where there is no float avaiable
    {error,no_float} -> list_to_integer(N);
    {F,_} -> F
  end.

%rpn managing all actions
rpn("+",[N1,N2|S]) -> [N2+N1|S];
rpn("-", [N1,N2|S]) -> [N2-N1|S];
rpn("*", [N1,N2|S]) -> [N2*N1|S];
rpn("/", [N1,N2|S]) -> [N2/N1|S];
rpn("^", [N1,N2|S]) -> [math:pow(N2,N1)|S];
rpn("ln", [N|S])    -> [math:log(N)|S];
rpn("log10", [N|S]) -> [math:log10(N)|S];
rpn(X, Stack) -> [read(X) | Stack].

So weit ich das verstehelists:foldl führt @ arpn/2 auf jedem Element in der Liste. Dies ist aber soweit ich diese Funktion verstehen kann. Ich habe die Dokumentation gelesen, aber es hilft mir nicht viel. Kann mir jemand erklären wielists:foldl funktioniert?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage