0

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

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

这是我尝试过的:

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

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

提前谢谢了!

4

2 回答 2

4

我认为您只是,P调用. 试试这个:LSTlists:map

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

如果你将匿名函数传递fun(X) -> X > 3 end给你的applyMap,你应该得到你想要的输出。

例子:

applyMap (fun(X) -> X > 3 end, LST).
于 2013-04-17T01:10:18.670 回答
0

有两个问题:首先,您缺少 and 之间的逗号PLST但是其次,您不能使用 Haskell 风格的柯里化函数,例如(> 3). lists:map((> 3), [1,2,3])在 Erlang 中是不正确的。

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

lists:map(fun(N) -> N > 3 end, [2,4,6])
于 2013-04-17T19:54:27.397 回答