Implemente una lista de comprensión de Erlang que toma dos elementos de una lista y hace una nueva lista de listas.Erlang: ¿cómo implementar la comprensión de listas de Erlang?
tengo este código
pair([], Acc) -> lists:reverse(Acc);
pair(L, Acc0) ->
[ A, B | T ] = L,
Acc = [ [A, B] | Acc0 ],
pair(T, Acc).
que funciona muy bien:
7> l:pair(lists:seq(1,6), []).
[[1,2],[3,4],[5,6]]
pero parece que debería ser capaz de implementar esto como una lista por comprensión. Mi Erlang-fu es demasiado débil para pensarlo.
¿Alguna sugerencia?
Gracias
Esto sigue al mantra de Erlang "let it crash", p. para el caso '[a]'. – Tilman
@Tilman Sí, la función está ** definida ** para tomar pares de elementos, por lo que si es un error si hay un número impar de elementos en la lista. Por supuesto, siempre puedes definir lo que sucederá en ese caso y manejarlo después de eso. – rvirding