实现一个Erlang列表理解,它从一个列表中获取两个元素,并创建一个新的列表列表。
我有这个代码
pair([], Acc) -> lists:reverse(Acc);
pair(L, Acc0) ->
[ A, B | T ] = L,
Acc = [ [A, B] | Acc0 ],
pair(T, Acc).
正常工作:
7> l:pair(lists:seq(1,6), []).
[[1,2],[3,4],[5,6]]
但似乎我应该可以将其实现为列表理解。我的二郎甫太虚弱了,无法提出。
有什么建议么?
谢谢
最佳答案
不,列表理解不是做到这一点的好方法,根据定义,列表一次只能处理一个元素。在您的代码中,实际上不需要使用累加器,速度的差异很小,为here,没有它就会变得更加清晰。我认为至少如此。
pairs([A,B|L]) ->
[[A,B]|pairs(L)];
pairs([]) -> [].
关于erlang - Erlang : how to implement Erlang list comprehension ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11146737/