2012-04-22 74 views
5

我有一個程序使用IntInteger,因爲一些函數返回的結果非常大。我厭倦了在各地都需要使用fromIntegral,我想知道是否有辦法讓Haskell在編譯時忽略IntInteger之間的區別。Haskell可以忽略Ints與整數嗎?

+4

不,沒有。忽略它們是不同類型和不同屬性的事實在語言中是邪惡的,並且與Haskell類似。我同意這有時候很痛苦,但忽略差異會更糟;並且忽略了Haskell提供的類型安全的全部要點。 – 2012-04-22 22:06:51

+8

不,沒有。這是一件好事:輸入安全。你可以定義一個類型名稱較短的轉換,但是:) – 2012-04-22 22:07:22

+3

至少在GHC中,'Integer'將在內部儘可能使用'Int',所以使用'Int'並不一定有意義。在這種情況下。 – geekosaur 2012-04-22 22:09:00

回答

13

解決方案:從您的程序中刪除Int,並使用全部Integer s。正如geekosaur所指出的那樣,您可以使用the generic functions from Data.List(例如genericLength)。如果您向我們提供您的特定程序代碼,那麼我們可以提供更具體的建議。