作为学习Erlang的一部分,我试图解决的问题之一是
写一个高阶函数滤波器(F,L),它返回所有的 L中的元素X,其中F(X)为真。
我是函数式编程的新手,也很高兴与高阶函数混淆。
我的尝试看起来像
filter(F, L) -> [T || T <- L, F(T) =:= true].
2> IsEven = fun(X) -> X rem 2 =:= 0 end.
#Fun<erl_eval.6.90072148>
3> IsEven(2).
true
4> IsEven(3).
false
5> math_functions:filter(IsEven, lists:seq(1, 10)).
[2,4,6,8,10]
6> math_functions:filter(IsEven, lists:seq(1, 20)).
[2,4,6,8,10,12,14,16,18,20]
问题
这是真正的高阶函数吗?请指导