2012-10-21 41 views
0

整数有一个内置在SML整数功能?是否有一个内置的功能来检查数在SML

我的意思是一样的东西:

我必须从文件中读取一个数字,它显示为输出,如果它的整数,提高异常,如果数量不是整数。例如我要检查是否(Int.fromString())的输出为整数,并显示它,如果它是...(重复上述)

+0

你到底要什么?一个函数,如果该double没有小数部分,则返回true并返回true。请注意,这对于大型双打来说不会很准确。或者一个接受int并且总是返回true的函数?这没有多大意义。 – sepp2k

回答

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 *) 

可以通过对比看到pairpairInt的区别你从打电话到pair 5pairInt 5,并pair "foo"pairInt "foo"得到。


如果你有一个int option,既然是这样,如果你尝试将string转换为int使用Int.fromString,您可以通过多种方式提取int。对于如何做到这一点,我把你提到的问题是“In smlnj how do you convert “string option” to “string”?”。

+0

我必须从文件中读取一个数字,它显示为输出,如果它的整数,提高异常,如果数量不是整数。 例如我要检查是否输出(Int.fromString())是整数,并显示它,如果它是...(重复上述)。 – 700resu

+0

@ user1710036:我建议你更新你的问题来反映这一点。我已经更新了我的答案。 –

相关问题