在 Erlang 中比较数组元素

Che*_*uis 5 erlang

我正在尝试学习如何以函数式编程的方式思考,为此,我正在尝试学习 Erlang 并通过codingbat 解决简单的问题。我遇到了比较列表中元素的常见问题。例如,将列表中第 i 个位置元素的值与第 i+1 个位置的值进行比较。所以,我一直在思考和寻找如何在 Erlang (或任何函数式语言)中以函数式方式做到这一点。

请对我温柔点,我在这个函数世界中很新手,但我想学习

提前致谢

Maz*_*ake 4

定义一个列表:

L = [1,2,3,4,4,5,6]
Run Code Online (Sandbox Code Playgroud)

定义一个函数 f,它接受一个列表

  • 如果匹配一个元素的列表或一个空列表,则返回空列表
  • 如果它与第一个元素和第二个元素匹配,则获取第一个元素并通过递归调用列表的其余部分来构造一个新列表
  • 否则跳过列表的第一个元素。

在 Erlang 代码中

f ([]) -> [];
f ([_]) -> [];
f ([X, X|Rest]) -> [X | f(Rest)];
f ([_|Rest]) -> f(Rest).
Run Code Online (Sandbox Code Playgroud)

应用功能

f(L)
Run Code Online (Sandbox Code Playgroud)

这应该有效...尚未编译并运行它,但它应该可以帮助您入门。另外,如果您需要对其进行修改以使其表现不同。

欢迎来到 Erlang ;)