如何在SML中的let绑定中编写相互递归的函数?

时间:2012-04-17 22:21:39

标签: sml smlnj

我想做这样的事情:

fun f () =
    let
      fun a() = b()
    and
      fun b() = a()
    in
      ()
    end

其中a和b是明智的相互递归函数。但是,这给出了:

Error: syntax error: replacing  AND with  SEMICOLON

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:9)

SML中相互递归函数的声明由fun ... and ...块标记:

fun f () =
  let
    fun a() = b()
    and b() = a() (* There is no 'fun' keyword before b() *)
  in
    ()
  end