[erlang-questions] Additions to lists module

Serge Aleynikov <>
Wed Nov 26 14:22:11 CET 2008


Say you have a mnesia table with a structure being record_info(fields, 
myTable).  The pos/2 function would help you find a position of a given 
field in the table.

Mazen Harake wrote:
> What is the idea behind pos?
> 
> Curious because I have never been in a situation where I need to know 
> the actual position of an element since I always assume that the order 
> in a list is always undefined. Perhaps I missed something... do you have 
> a practical example?
> 
> /M
> 
> Serge Aleynikov wrote:
>> 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.
>> _______________________________________________
>> erlang-questions mailing list
>> 
>> http://www.erlang.org/mailman/listinfo/erlang-questions
>>   
> 
> 




More information about the erlang-questions mailing list