[erlang-questions] Additions to lists module

Serge Aleynikov <>
Wed Nov 26 14:08:09 CET 2008


I'd like to propose addition of these two functions to the lists module. 
  Very often I find the need for this functionality and feel that it 
belongs to the standard library.

Serge



%% @spec (List::list(), Ele) -> integer()
%% @doc Returns the position of `Ele' in the `List'. 0 is returned
%%      when `Ele' is not found.
%% @end
pos(List, Ele) ->
     pos(List, Ele, 1).
pos([Ele | Tail], Ele, Pos) ->
     Pos;
pos([_ | Tail], Ele, Pos) ->
     pos(Tail, Ele, Pos+1);
pos([], _Ele, _) ->
     0.

%% @spec (Pred, Acc, List::list()) -> Acc1
%%          Pred = (Ele, Acc) -> Acc1
%% @doc A combination of foldl/3 and takewhile/2. Accumulate the result
%%      while the predicate function returns true.
%% @end
foldlwhile(Pred, Acc0, [H|T]) ->
     case Pred(H, Acc0) of
     {true, Acc} ->
         foldwhile(Fun, Acc, T);
     {false, Acc} ->
         Acc;
     end;
foldlwhile(_Pred, Acc, []) ->
     Acc.



More information about the erlang-questions mailing list