标准ml中的最大整数和最小整数

时间:2012-03-25 13:12:25

标签: types max option sml min

我想使用ml的最大整数和最小整数,但我不能,我从库中看到它的int类型选项,我该如何使用它?我在这里看到http://www.standardml.org/Basis/integer.html#SIG:INTEGER.minInt:VAL

我想用它来制作max和min函数,每个方法都取一个整数列表,我必须分别返回max和min。

我尝试了以下代码,但它们没有用:

- fun max x = 
=   foldr (fn (a, b) => if a > b then a else b) INTEGER.minInt x;

- fun max x = 
=   foldr (fn (a, b) => if a > b then a else b) minInt x;

- fun max x = 
=   foldr (fn (a, b) => if a > b then a else b) Int.minInt x;

有人知道如何使用它们吗?

1 个答案:

答案 0 :(得分:5)

Int.minIntInt.maxInt的类型为int option,而非int

这意味着,如果没有最大值(或最小值),则它们可以位于NONE表单上,也可以位于SOME v表单上,其中v是最大值(或最小值)。

有很多方法可以从选项中获取价值。

  • 模式匹配。
  • valOf,提取值。 (注意,如果给出NONE
  • 则会引发异常
  • getOpt,提取值,如果给定NONE则使用默认值。

但是,对于此特定问题,如果在输入上进行某些模式匹配,则可以在不需要Int.minInt的情况下执行此操作。另外,请记住考虑输入列表为空的情况。