OCaml模块中互相调用的函数

3
我对Ocaml有个问题,我是初学者 :-)
以下是我正在尝试的示例代码:(我知道这没什么意义,但这不是我的真实代码,只是一个示例)
let func a b = a
let func2 a b = b

let func_a a b =
    if b < 0 then
       func_b b a
    else
       func a b

let func_b a b =
    if a < 0 then
       func2 a b
    else
       func_a b a

问题是: 在 func_a 函数中的第一个“if”中,func_b 的值未定义... 如果有人能帮忙解决一下吗?
编辑:我理解为什么未定义,但我不知道如何修复。
非常感谢!
Max
1个回答

5

关键字是相互递归函数

let func a b = a
let func2 a b = b

let rec func_a a b =
    if b < 0 then
       func_b b a
    else
       func a b

and func_b a b =
    if a < 0 then
       func2 a b
    else
       func_a b a

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接