我的问题是,如何在Erlang中实现数组,而不是列表.
使用不可变类型执行的操作,
move ([X | Xs], Ys) ->
[X | Ys].
Ls = move([1,2,3], [2,3,4])
Run Code Online (Sandbox Code Playgroud)
将占用堆中的常量mem,因为这是所有参考工作.
但对于数组中的相同内容
move (A1, A2) ->
array:set(0, array:get(0,A1),A2).
A1 = array:from_list([1,2,3]).
A2 = array:from_list([0,2,3,4]).
A3 = move(A1,A2).
Run Code Online (Sandbox Code Playgroud)
将move在这里使用的大小成正比,A2还是会能够做到这一点不变的空间像阵列?