Erlang中Map的基本示例

时间:2013-04-16 23:23:47

标签: erlang

学习Erlang的第2天。我试图通过创建一个简单的map函数来学习在Erlang中使用Map的基础知识,该函数接受任何谓词和列表(由用户传入)并检查谓词是返回true还是false并将结果存储在列表中。

因此,如果用户传入(> 3)作为谓词且列表包含[3,4,5],则所需的输出将为[false, true, true]

这就是我的尝试:

applyMap (P, LST) -> lists:map(P LST).  

我很感激有关如何做到这一点的任何建议。

非常感谢提前!

2 个答案:

答案 0 :(得分:2)

我认为您在致电,时错过了PLST之间的lists:map。试试这个:

applyMap (P, LST) -> lists:map(P, LST).

如果您将匿名函数fun(X) -> X > 3 end传递给applyMap,则应获得所需的输出。

示例:

applyMap (fun(X) -> X > 3 end, LST).

答案 1 :(得分:0)

有两个问题:首先,你错过了PLST之间的逗号,但其次,你不能使用Haskell风格的curried函数,如(> 3)。 Erlang中lists:map((> 3), [1,2,3])不正确。

在Haskell中,(> 3)\n -> n > 3的curry形式。在Erlang中,您必须明确地编写它:

lists:map(fun(N) -> N > 3 end, [2,4,6])