C'è un modo veloce per convertire una lista semplice in una lista di due tuple in modo tale che una lista semplice come [1,2,3,4,5,6] diventa [{1,2}, {3,4 }, {5,6}]?Il modo migliore per convertire una lista piatta in un set di due tuple in Erlang?
Questo funziona, ma ci si sente SBAGLIATO semplicemente:
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ì, l'inversione e il prefisso sono sempre più efficienti. Ma penso che l'approccio "dritto" funzioni bene come lezione 1, seguito rapidamente dal prefisso/inverso come lezione 2 ...! –
Perché si conta la lunghezza dell'elenco quando non si esegue un messaggio di errore più sensibile. Il tuo inverso/2 genererà lo stesso messaggio di errore del tuo contrario/1. È un lavoro inutile e rallenta un po '. –
@Hynek: Penso che sia meglio perché fallisce prima. Inoltre aggiunge chiarezza a chi leggerà il codice – zakovyrya