これはほんの一例です。この 2 つの機能は接続されています。あなたは本当に最低と呼ばれるものを呼びたいです。次に、2 つのうち最小の数を返す必要があります。もちろん、これは機能しません。reducemax 関数をコンパイルするときに、lowest という未定義の関数を呼び出すからです。
fun reducemax (i:int * int):int =
if (#1 i) > (#2 i)
then lowest(((#1 i)-1), (#2 i))
else lowest((#1 i), ((#2 i)-1));
fun lowest (i:int * int):int =
if (#1 i) = (#2 i)
then (#1 i)
else reducemax((#1 i), (#2 i));
let を使用して、lowest 内で reducemax 関数を宣言できることはわかっていますが、これを回避する方法はありますか? たとえば、C のように、関数を定義せずに宣言します。reducemax 関数は、最小値が int を返し、int * int 引数を取ることを知る必要があることを理解しています。