2016-06-12 14 views
1

Gibt es eine Standardbibliotheksfunktion in Elixir (oder Erlang), um die Rückseite einer Liste vor einer anderen Liste zu verketten? Grundsätzlich suche ich nach einem Gegenstück von reverse_::: in Scala.Reverse concat in Elixir

Der Grund ist, dass es praktisch ist, wenn ein Tail-rekursive Algorithmus in einer Liste implementiert wird. Während der Rekursion behalten Sie einige Elemente für später bei, indem Sie sie auf der Vorderseite einer Akkumulatorliste hinzufügen. Am Ende können Sie sie auf den Rest der zusammengestellten Liste auf einmal umdrehen (was ziemlich effizient sein sollte).

Antwort

1

Sie können eine umgekehrte und concat in Erlang verwenden, indem Sie lists:reverse/2 verwenden.

Ich denke, die Dokumentation Erklärung und Beispiel sind klar:

reverse(List1, Tail) -> List2.

Gibt eine Liste mit den Elementen in List1 in umgekehrter Reihenfolge zurück, wobei der Anhang Tail angehängt ist.

> lists:reverse([1, 2, 3, 4], [a, b, c]). 
[4,3,2,1,a,b,c] 
+2

Wir haben auch [ 'Enum.reverse/2'] (http://elixir-lang.org/docs/stable/elixir/Enum.html#reverse/2) in Elixir. – whatyouhide

+0

Genau das habe ich gesucht. Vielen Dank. Ich habe die 2-Argument-Version nicht früher gesehen. – MigratoryMonkeyMaster