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

hak*_*ata 4 types max sml min option

我想使用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;
Run Code Online (Sandbox Code Playgroud)

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

Seb*_*olm 5

Int.minInt并且Int.maxInt是类型int option而不是int.

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

从选项中获取价值的方法有很多种.

  • 模式匹配.
  • valOf,它提取了价值.(注意,如果给出则引发异常NONE)
  • getOpt,它提取值,并在给定时使用默认值NONE.

但是,对于这个特殊问题,Int.minInt如果在输入上进行一些模式匹配,则可以不需要这样做.另外,请记住考虑输入列表为空的情况.