gpt4 book ai didi

ocaml - 简单的 OCaml 练习

转载 作者:行者123 更新时间:2023-12-04 22:15:31 27 4
gpt4 key购买 nike

我试图通过 Jason Hickey 笔记自学 OCaml,下面的练习让我难住了。
问题:编写一个函数 sum 给定两个整数边界 m,n 和函数 f 计算求和。
我正在尝试这个:

     let rec sum m n f=
if m>n then 0
else if m=n then f n
else f m + sum n m+1 f

但它不起作用,产生类型错误。

最佳答案

你需要一些括号。

let rec sum m n f=
if m>n then 0
else if m=n then f n
else f m + sum n (m+1) f

(虽然为了可读性,我通常会将最后一行放在括号中,否则 (f m) + (sum n (m+1) f) 。)
没有括号的情况是它将它视为 (f m) + (sum n m) + (1 f),这会产生 sum n m 没有类型 int 的错误,因为它是一个具有更复杂类型的部分函数应用程序。

作为一般规则,当表达式作为参数传递给函数时,它总是需要加括号。在相关说明中,如果您真的想将 plus 函数作为参数传递,您可以将它放在括号中(例如: sum m n (+)(尽管在这种情况下不会进行类型检查,因为 + 需要两个数字))。

关于ocaml - 简单的 OCaml 练习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7775075/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com