Haskell 64-битный числовой тип - PullRequest
5 голосов
/ 15 июня 2009

Я пишу в Haskell функцию, которая работает с числами, выходящими за пределы 32-битного типа int. Я не могу найти тип, чтобы сделать это, и я, похоже, ищу неправильные термины.

Он должен уметь хранить числа длиной около 2 ^ 40 без потери точности

Пример:

addTwo :: Int -> Int -> Int
addTwo a b = a + b

main :: IO()
main = do
    putStrLn ( show ( addTwo 700851475143 1 ) )

Ответы [ 3 ]

21 голосов
/ 15 июня 2009

Для неограниченной точности используйте тип Integer. Для точности 64 бита на разных платформах используйте Data.Int.Int64. И то, и другое будет легко найти с помощью Google: http://haskell.org/hoogle/

7 голосов
/ 15 июня 2009

Требуется тип данных Integer вместо Int:

addTwo :: Integer -> Integer -> Integer
0 голосов
/ 15 июня 2009

Используйте Integer, что является неограниченной точностью, вместо Int.

...