我目前正在尝试定义类型的函数('a - >'a) - > 'a - > 'a采用'a - >类型的函数'a和类型'a的参数,并在参数上调用该函数两次。我对OCaml比较陌生,但我确实知道如何定义一个函数,但我没有尝试试错,或者Google试图获取函数将函数作为参数然后应用该函数两次。
任何提示或指示都将非常感谢,提前感谢。
编辑:感谢下面的杰弗里,我的问题现在已经解决了。
val f4:('a - >'a) - > 'a - > 'a =
答案 0 :(得分:1)
OCaml推断类型,所以如果你使用一个参数作为一个函数,它会推断它是一个函数。这是一个例子:
# let f g = g 8 + g 10;;
val f : (int -> int) -> int = <fun>
# (~-);;
- : int -> int = <fun>
# f (~-);;
- : int = -18
要理解该示例,请注意(~-)
是普通的整数否定运算符。
更新:提示您更复杂的问题。您需要测试 n
的值。也许if
声明会起作用?第二个提示:如果使用递归,则不需要使用循环。如果要使用循环,请不要使用递归。 (就我个人而言,我建议使用递归,就像在学习钢琴时演奏音阶一样。)