2013-02-27 155 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