7

私はこのようなことをしたいと思います:

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

ここで、aとbは賢明な相互再帰関数です。ただし、これにより次のことが可能になります。

Error: syntax error: replacing  AND with  SEMICOLON

これを行う方法はありますか?

4

1 に答える 1

11

SML での相互再帰関数の宣言は、fun ... and ...ブロックでマークされます。

fun f () =
  let
    fun a() = b()
    and b() = a() (* There is no 'fun' keyword before b() *)
  in
    ()
  end
于 2012-04-17T22:29:34.583 に答える