Erlang map nested list - PullRequest
       6

Erlang map nested list

3 голосов
/ 11 февраля 2011

У меня есть список:

[["asd", "ddsa"], ["ASD", "ASD"], ["FH", "SDFDF]].

Как я могу применить функцию F к каждому элементу этого списка? Как я могу отобразить этот список?

Спасибо.

Ответы [ 2 ]

7 голосов
/ 11 февраля 2011

Если предположить, что под элементом вы подразумеваете «asd», ваш основной список всегда будет иметь два уровня глубины, как в вашем примере, и ваш возвращаемый результат должен быть в том же формате, что и будет.

List1 = [["asd", "ddsa"], ["ASD", "ASD"], ["FH", "SDFDF]]
[ [ F(String) || String <- List2 ] || List2 <- List1 ]

Если вы имеете в виду, что вашим элементом является ["asd", "ddsa"], просто используйте списки: map / 2 или понимание списка, как показано ниже.

List1 = [["asd", "ddsa"], ["ASD", "ASD"], ["FH", "SDFDF]]
[ F(List2) || List2 <- List1 ]
2 голосов
/ 11 февраля 2011

Вы можете определить функцию deepMap, выполнив что-то вроде:

deepMap(Fun, T) ->
  case is_list(T) of
    true -> lists:map(fun(E) -> deepMap(Fun,E) end, T);
    false -> Fun(T)
  end.

Если вход не является списком, оцените свою функцию.Если это список, примените deepMap ко всем элементам, используя map, используя вашу функцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...