Erlang список понимания с двумя списками в последовательности? - PullRequest
4 голосов
/ 17 декабря 2009

Можно ли использовать списки в двух списках, последовательно за элементом? Учитывая A = [1,2,3], B = [4,5,6], получите немного C = [f(1, 4), f(2, 5), f(3, 6)]. Другими словами, более прямой / эффективный способ сделать [f(U, V) || {U, V} = lists:zip(A, B)].

Аналогичный вопрос задается в двоичных файлах, если заданы A = <<1,2,3>> и B = <<4,5,6>>. Это было бы очень полезно, если вам нужно, например, xor для двух двоичных файлов.

Ответы [ 2 ]

8 голосов
/ 17 декабря 2009

В настоящее время это невозможно. Это уже было предложено в EEP12 и EEP19 .

Ваш лучший выбор - реализовать для этого собственную рекурсивную функцию.

1 голос
/ 18 декабря 2009

Для этого в модуле lists уже есть функция высшего порядка, и она называется lists: zipwith / 3 . Ваш пример сценария будет реализован следующим образом:

lists:zipwith(fun f/2, A, B).
...