E4006#
This error occurs when the same local function name is declared multiple times in a local recursive function group. Each function in the group must have a unique name.
Erroneous Example#
pub fn use_helper() -> Int {
letrec helper = fn(n : Int) -> Int {
n
} and helper = fn(n : Int) -> Int {
n + 1
}
helper(0)
}
Suggestion#
To fix this error, give each local function in the recursive group a unique name:
pub fn use_helpers() -> Int {
letrec helper1 = fn(n : Int) -> Int {
n
} and helper2 = fn(n : Int) -> Int {
n + 1
}
helper1(helper2(0))
}
You can also move one of the functions to a different scope or merge the functionality into a single function if they serve similar purposes.