使用函数作为参数定义函数

时间:2013-03-07 23:51:03

标签: function functional-programming ocaml

我目前正在尝试定义类型的函数('a - >'a) - > 'a - > 'a采用'a - >类型的函数'a和类型'a的参数,并在参数上调用该函数两次。我对OCaml比较陌生,但我确实知道如何定义一个函数,但我没有尝试试错,或者Google试图获取函数将函数作为参数然后应用该函数两次。

任何提示或指示都将非常感谢,提前感谢。

编辑:感谢下面的杰弗里,我的问题现在已经解决了。

设f4 g a = g(g a);;

val f4:('a - >'a) - > 'a - > 'a =

1 个答案:

答案 0 :(得分:1)

OCaml推断类型,所以如果你使用一个参数作为一个函数,它会推断它是一个函数。这是一个例子:

# let f g = g 8 + g 10;;
val f : (int -> int) -> int = <fun>
# (~-);;
- : int -> int = <fun>
# f (~-);;
- : int = -18

要理解该示例,请注意(~-)是普通的整数否定运算符。

更新:提示您更复杂的问题。您需要测试 n的值。也许if声明会起作用?第二个提示:如果使用递归,则不需要使用循环。如果要使用循环,请不要使用递归。 (就我个人而言,我建议使用递归,就像在学习钢琴时演奏音阶一样。)