¿Existe una forma rápida de convertir una lista plana en una lista de dos tuplas de modo que una lista plana como [1,2,3,4,5,6] se convierta en [{1,2}, {3,4 }, {5,6}]?¿La mejor manera de convertir una lista plana en un conjunto de dos tuplas en Erlang?
Esto funciona, pero se siente mal simplemente:
tuples_from_flat_list(Target) ->
TargetWithIndex = lists:zip(lists:seq(1, length(Target)), Target),
{K, V} = lists:partition(fun({I, _}) -> I rem 2 == 1 end, TargetWithIndex),
lists:zipwith(fun({_, X}, {_, Y}) -> {X, Y} end, K, V).
Sí, la inversión y el prefijo siempre son más eficaces. ¡Pero creo que el enfoque "directo" funciona bien como la Lección 1, seguida rápidamente por el reverso/prefijo como la Lección 2 ...! –
¿Por qué cuenta la longitud de la lista cuando no hace un mensaje de error más sensible? Su reverse/2 generará el mismo mensaje de error que su reverse/1. Es un trabajo sin valor y ralentizarlo un poco. –
@Hynek: Creo que es mejor porque falla antes. También agrega claridad para alguien que va a leer el código – zakovyrya