如何在Erlang中编写以下高阶Haskell函数?
applyTwice :: (a -> a) -> a -> a
applyTwice f x = f (f x)
答案 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中使用(没有内置的partial
或curry
功能)。你也不能在Erlang中做类似
applyTwice :: (a -> a) -> a -> a
applyTwice f = f . f