E4006

E4006#

这个错误会在同一个局部递归函数组中多次声明相同的局部函数名时发生。组中的每个函数都必须有唯一的名称。

错误示例:#

pub fn use_helper() -> Int {
  letrec helper = fn(n : Int) -> Int {
    n
  } and helper = fn(n : Int) -> Int {
    n + 1
  }
  helper(0)
}

建议#

要修复这个错误,请给递归组中的每个局部函数一个唯一的名称:

pub fn use_helpers() -> Int {
  letrec helper1 = fn(n : Int) -> Int {
    n
  } and helper2 = fn(n : Int) -> Int {
    n + 1
  }
  helper1(helper2(0))
}

你也可以把其中一个函数移动到别的作用域,或者将它们合并到一个函数中(如果功能类似)。