นี่เป็นเพียงตัวอย่าง ฟังก์ชันทั้งสองนี้เชื่อมต่อกัน คุณต้องการโทรหาคนที่เรียกว่าต่ำสุดจริงๆ จากนั้นควรคืนค่าจำนวนต่ำสุดของทั้งสอง แน่นอนว่าวิธีนี้ใช้ไม่ได้ผลเพราะเมื่อคุณรวบรวมฟังก์ชันลดค่าสูงสุด คุณทำการเรียกฟังก์ชันที่ไม่ได้กำหนดไว้ซึ่งเรียกว่าต่ำสุดในขณะนั้น
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 เพื่อประกาศฟังก์ชันลดสูงสุดภายในค่าต่ำสุดได้ แต่มีวิธีแก้ไขเรื่องนี้ไหม ตัวอย่างเช่นใน C ให้ประกาศฟังก์ชันโดยไม่ต้องกำหนด ฉันเข้าใจว่าฟังก์ชันลดค่าสูงสุดจำเป็นต้องรู้ว่าค่าต่ำสุดจะส่งคืน int และรับอาร์กิวเมนต์ int * int