2012-10-21 40 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:我建議你更新你的問題來反映這一點。我已經更新了我的答案。 –

相關問題