Wdrażaj listę słów Erlanga, która pobiera dwa elementy z listy i tworzy nową listę list.Erlang: jak wdrożyć zrozumienie listy Erlanga?
Mam ten kod
pair([], Acc) -> lists:reverse(Acc);
pair(L, Acc0) ->
[ A, B | T ] = L,
Acc = [ [A, B] | Acc0 ],
pair(T, Acc).
który działa prawidłowo:
7> l:pair(lists:seq(1,6), []).
[[1,2],[3,4],[5,6]]
ale wydaje się, że powinienem być w stanie realizować to jako listowego. Mój Erlang-fu jest zbyt słaby, by to wymyślić.
Wszelkie sugestie?
Dzięki
Jest to zgodne z mantrą Erlang "zawieść", np. dla przypadku "[a]". – Tilman
@Tilman Tak, funkcja jest ** zdefiniowana **, aby wziąć pary elementów, więc jeśli jest to błąd, jeśli na liście znajduje się nieparzysta liczba elementów. Oczywiście możesz zawsze zdefiniować, co ma się stać w tym przypadku, a potem to zrobić. – rvirding