2013-02-27 120 views

回答

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 
+0

我们在Erlang有咖喱形式吗? – coffeMug 2013-02-27 18:25:33

+1

@Coffe_Mug没有语法糖来处理currying。你可以编写函数来返回函数的必要范围,但是......这很难写和读。 – 2013-02-27 18:27:53

+1

@Coffe_Mug同样作为Erlang函数具有相同的和不同的* arity *(args的数量)是**不同的**函数,所以currying变得混乱。 – rvirding 2013-02-28 22:55:21