在 Elixir 中反向连接

Reverse concat in Elixir

Elixir(或 Erlang)中是否有标准库函数可以将一个列表的反向连接在其他列表的前面?基本上我在 Scala 中寻找 reverse_::: 的等价物。

基本原理是在列表上实现尾递归算法时很方便。在递归过程中,您可以保留一些元素以备后用,方法是将它们添加到累加器列表的前面。最后,您可以一次将它们反向连接到组装列表的其余部分(这应该非常有效)。

您可以使用 lists:reverse/2 在 Erlang 中进行反转和连接。

我认为文档解释和示例足够清楚:

reverse(List1, Tail) -> List2.

Returns a list with the elements in List1 in reverse order, with the tail Tail appended.

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

Elixir 中反转列表的函数是Enum.reverse/1, and Enum.reverse/2 可用于反转和连接:

iex> Enum.reverse([1,2,3])
[3, 2, 1]
iex> Enum.reverse([1,2,3], [:a, :b, :c])
[3, 2, 1, :a, :b, :c]