Erlang中的高阶函数

时间:2013-02-27 18:12:47

标签: erlang higher-order-functions

如何在Erlang中编写以下高阶Haskell函数?

applyTwice :: (a -> a) -> a -> a  
applyTwice f x = f (f x)

1 个答案:

答案 0 :(得分:3)

1> Apply2 = fun(F, X) -> F(F(X)) end.
#Fun<erl_eval.12.82930912>
2> F = fun(Arg) -> Arg * 2 end.
#Fun<erl_eval.6.82930912>
3> Apply2(F, 10).
40

问题在于,我不确定这是否是你真正需要的。在Haskell中,您可以使用applyTwice f作为函数,但不能在Erlang中使用(没有内置的partialcurry功能)。你也不能在Erlang中做类似

的事情
applyTwice :: (a -> a) -> a -> a  
applyTwice f = f . f