Как быстро поменять местами два элемента в списке Erlang?
Например, у меня есть список: [1,2,3,4], как я могу быстро получить [1,3,2,4]?
[1,2,3,4]
[1,3,2,4]
Вы не сказали в своем вопросе, как вы хотите указать, какие два элемента вы хотите поменять.
Если вы просто хотите поменять местами элементы в позициях 2 и 3 в списке (как в вашем примере):
swap23([A,B,C|Rest]) -> [A,C,B|Rest].
Хорошо, если вы хотите поменять любой индекс на другой, вы можете сделать следующее
swap(List,S1,S2) -> {List2,[F|List3]} = lists:split(S1-1,List), LT = List2++[lists:nth(S2,List)|List3], {List4,[_|List5]} = lists:split(S2-1,LT), List4++[F|List5].