Ini hanya sebuah contoh. Kedua fungsi ini terhubung. Anda benar-benar ingin memanggil yang disebut paling rendah. Ini kemudian akan mengembalikan angka terendah dari keduanya. Ini tentu saja tidak akan berhasil karena pada saat mengkompilasi fungsi penguranganmaks, Anda membuat panggilan ke fungsi yang pada saat itu belum ditentukan disebut fungsi terendah.
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));
Saya tahu saya bisa menggunakan let untuk mendeklarasikan fungsi penguranganmaks di dalam yang terendah, tetapi apakah ada cara untuk mengatasinya? Misalnya seperti di C, deklarasikan fungsi tanpa mendefinisikannya. Saya memahami fungsi penguranganmaks yang perlu diketahui terendah akan mengembalikan int dan mengambil argumen int * int.