【发布时间】:2010-11-02 21:31:21
【问题描述】:
我正在用 Haskell 编写一个函数来处理超过 32 位 int 长度的数字。我找不到执行此操作的类型,而且我似乎在搜索错误的术语。
它需要能够保存长度约为 2^40 的数字而不会损失任何精度
例子:
addTwo :: Int -> Int -> Int
addTwo a b = a + b
main :: IO()
main = do
putStrLn ( show ( addTwo 700851475143 1 ) )
【问题讨论】:
-
具有讽刺意味的是,如果您没有将 addTwo 的签名放入,它会起作用,因为 addTwo 会被推断为多态(即 Num a => a -> a -> a) ,然后对于数字,它会默认为最通用的类型,即 Integer
-
但我不会学到任何东西,这就是重点
标签: haskell types integer numerical