Ocaml税务计算器隐藏错误

Ocaml税务计算器隐藏错误,ocaml,Ocaml, 编辑了代码,还是一样的错误。我想我在这里用错了。我如何表示我希望在递归调用中使用aux函数calc的这个实现。每个let后面必须跟in,模块最外层除外 您的辅助函数定义允许重新计算。。。后面不跟in 更新 在模块的最外层,您可以拥有以下功能: let tax income brackets rates = let rec calc (income:float) (brackets: float list list) (rates:float list) (x:int) : float =

编辑了代码,还是一样的错误。我想我在这里用错了。我如何表示我希望在递归调用中使用aux函数calc的这个实现。

每个let后面必须跟in,模块最外层除外

您的辅助函数定义允许重新计算。。。后面不跟in

更新

在模块的最外层,您可以拥有以下功能:

let tax income brackets rates =
  let rec calc (income:float) (brackets: float list list) (rates:float list) (x:int) : float =
    if List.nth (List.nth brackets x) (0) > income then
      0.0
    else if List.nth (List.nth brackets x) (1) > income then
      income -. List.nth (List.nth brackets x) (0) *. (List.nth rates x) +. calc (income) (brackets) (rates) (x+1) in calc income brackets rate 0
    else
      List.nth (List.nth brackets x) (1) -. List.nth (List.nth brackets x) (0)*.(List.nth rates x) +. calc (income) (brackets) (rates) (x+1) in calc income brackets rate 0
let name = expression
这将名称定义为模块的组件之一。这就是名为tax的函数的情况

在其他任何地方,您只能拥有以下功能:

let tax income brackets rates =
  let rec calc (income:float) (brackets: float list list) (rates:float list) (x:int) : float =
    if List.nth (List.nth brackets x) (0) > income then
      0.0
    else if List.nth (List.nth brackets x) (1) > income then
      income -. List.nth (List.nth brackets x) (0) *. (List.nth rates x) +. calc (income) (brackets) (rates) (x+1) in calc income brackets rate 0
    else
      List.nth (List.nth brackets x) (1) -. List.nth (List.nth brackets x) (0)*.(List.nth rates x) +. calc (income) (brackets) (rates) (x+1) in calc income brackets rate 0
let name = expression
这将名称定义为要在表达式2中使用的局部变量。您正在定义一个名为calc的局部变量,但没有在其中使用它的表达式

更新2

下面是一个使用辅助函数返回给定列表中所有奇数的反向列表的示例

let name = expression1 in expression2

发布错误消息。它说错误:最后两个分号的字符出现语法错误。你确定吗?当我在aux方法的声明之后放入一个in时,我确信inYes上会出现语法错误。您可以显示新代码。我不确定它到底是什么样子。当然,您不能只是添加插件来解决您的问题。好的,我现在了解in的用法。我应该如何表明我希望在calc的递归调用中使用局部变量calc?我在原来的帖子中更新了代码,现在你在中有太多的用法了。你只能有一个。没有什么特别的事情可以指示递归调用。就用这个名字吧。