SML:declear但不定义函数

时间:2013-11-07 14:08:26

标签: function sml smlnj

这只是一个例子。这两个功能是相连的。你真的想叫一个叫做最低的那个。然后它应该返回两者中的最小数字。这当然不会起作用,因为在编译reducemax函数时,你会调用一个名为最低值的未定义函数。

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来声明最低的reducemax函数,但有什么方法可以解决这个问题吗?例如,在C中,声明函数而不定义它。我确实理解reducemax函数需要知道最低值将返回一个int并取一个int * int参数。

1 个答案:

答案 0 :(得分:2)

只需将第二个fun替换为and,然后删除分号即可。这定义了相互递归的函数。