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

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

这是我试过的:

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

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

提前谢谢了!

===============>>#1 票数:2 已采纳

我认为你只是缺少一个,之间的PLST在调用lists:map 试试这个:

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

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

例:

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

===============>>#2 票数:0

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

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

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

  ask by AnchovyLegend translate from so

未解决问题?本站智能推荐:

关注微信公众号