J'ai essayé à l'origine d'écrire ceci sans être récursif de queue, comme selon http://www.erlang.org/doc/efficiency_guide/myths.html le FAIS le fait lui-même. Cela fonctionne, je me demande juste si mon code est trop moche/inefficace. Celui aux programmes d'alphabétisation http://en.literateprograms.org/Selection_sort_%28Erlang%29 semble un peu moins concis que ma version, mais je pense que le mien a trop de paramètres pour être facilement compris. Je ne suis pas sûr si je me sentirais de cette façon si j'avais plus d'expérience avec la récursivité.Est-il possible d'écrire ceci sans accumulateur?
-module(selection).
-export([selection/1]).
selection([H|T]) -> lists:reverse(selection(T,H,[],[])).
selection([],Min,[H|T],Acc) -> selection(T,H,[],[Min|Acc]);
selection([],Min,[],Acc) -> [Min|Acc];
selection([H|T],Min,Rest,Acc) when H < Min -> selection(T,H,[Min|Rest],Acc);
selection([H|T],Min,Rest,Acc) -> selection(T,Min,[H|Rest],Acc).
Si vous sélectionnez max au lieu de min vous devriez pouvoir faire ce qui précède sans l'appel inverse. –