一个函数,它接受一个数字和一个列表,并输出一个列表,其中包含该数字在Erlang中的所有位置

一个函数,它接受一个数字和一个列表,并输出一个列表,其中包含该数字在Erlang中的所有位置,erlang,Erlang,我如何在Erlang中构造一个函数,将一个列表和一个数字X作为输入,然后返回列表中具有该数字X的所有元素的位置 我是一名函数式编程新手。酷炫: get_pos(L,E) -> {R,_} = lists:foldl(fun(X,{Acc,Pos}) when X == E -> {[Pos|Acc],Pos+1}; (_,{Acc,Pos}) -> {Acc,Pos+1} end, {[],1},L), R. get_pos(L, E) -> [

我如何在Erlang中构造一个函数,将一个列表和一个数字X作为输入,然后返回列表中具有该数字X的所有元素的位置

我是一名函数式编程新手。

酷炫:

get_pos(L,E) ->
    {R,_} = lists:foldl(fun(X,{Acc,Pos}) when X == E -> {[Pos|Acc],Pos+1}; (_,{Acc,Pos}) -> {Acc,Pos+1} end, {[],1},L),
    R.
get_pos(L, E) ->
    [ P ||
      {X, P} <- lists:zip(L, lists:seq(1, length(L))),
      X =:= E ].
快速高效:

get_pos(L, E) -> get_pos(L, E, 1).

get_pos([], _, _) -> [];
get_pos([H|T], H, Pos) ->
    [Pos | get_pos(T, H, Pos+1)];
get_pos([_|T], E, Pos) ->
    get_pos(T, E, Pos+1).
get_pos(L, E) -> get_pos(L, E, 1).

get_pos([], _, _) -> [];
get_pos([H|T], H, Pos) ->
    [Pos | get_pos(T, H, Pos+1)];
get_pos([_|T], E, Pos) ->
    get_pos(T, E, Pos+1).