0

sml中是否有内置的整数函数?

我的意思是:

我必须从文件中读取一个数字,如果它是整数,则将其显示为输出,如果该数字不是整数,则引发异常。例如,我必须检查 (Int.fromString()) 的输出是否为整数,如果是则显示它...(重复上面)

4

1 回答 1

1

类型系统将确保给定函数的值的类型与函数的类型签名相匹配。

也就是说,如果您有一个将整数作为输入的函数,例如

fun double n = 2 * n
(* this function has type: int -> int *)

那么n将永远是一个整数。除了整数之外,无法调用该函数;它会给出一个类型错误。

如果你有一个多态函数,比如

fun pair n = (n, n)
(* this function has type: 'a -> 'a * 'a *)

然后您无法知道运行时输入的类型。所有类型的输入都将被同等对待。

但是,您始终可以通过在定义函数时明确类型来将多态函数限制为仅适用于给定类型:

fun pairInt (n : int) = (n, n)
(* this function has type: int -> int * int *)

通过比较调用to和to得到的结果,您可以看到pair和之间的区别。pairIntpair 5pairInt 5pair "foo"pairInt "foo"


如果您有int option,就像您尝试将 an 转换stringintusing一样Int.fromString,您可以通过多种方式提取int。对于如何做到这一点,我建议您参考问题“在 smlnj 中,您如何将“字符串选项”转换为“字符串”? ”。

于 2012-10-21T13:15:59.570 回答