在 SML 中隐藏相互递归函数

Hiding mutual recursive functions in SML

我有两个严重依赖彼此的功能。每一个都必须使用另一个才能执行所需的任务。

我在用SML的时候用了and运算符

问题是我需要隐藏每一个不是主要功能的功能。我被教导使用 local 来执行此操作,但我从未遇到过这种情况,我不明白这样的事情在语法上是如何工作的。

我指的是这样的东西:

local
  f()
in
 g()
end;

有什么办法吗?

您需要第三个 "main" 函数来开始 – 您的本地 f 不能与 g.

相互递归

像这样:

local
    fun f x = something with g
    and g x = something with f
in 
    fun h x = whatever
end