Erlang地图嵌套列表

时间:2011-02-11 12:42:41

标签: list erlang nested

我列出了:

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

如何将函数F应用于此列表的每个元素?我该如何映射此列表?

谢谢。

2 个答案:

答案 0 :(得分:7)

如果按元素表示你的意思是“asd”,那么你的主列表将总是两个级别,如你的例子所示,你的返回结果将采用相同的格式,这将是应该的。

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

如果你的意思是你的元素是[“asd”,“ddsa”],只需使用list:map / 2或list comprehension,如下所示。

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

答案 1 :(得分:2)

您可以定义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的所有元素。