If you want to avoid appending, you could reduce the reversed list on itself:
l = [1,2,3,4]
lr = Enum.reverse(l)
Enum.reduce(lr, lr, fn x, acc -> [x | acc] end)
This will avoid traversing the list twice (once for reverse, another for appending with ++
).