Есть ли в ATS поддержка арифметических операций над большими целыми числами?

Например, я могу реализовать функцию факториала следующим образом:

fun factorial(n: int): int =
  if n > 0 then n * factorial(n-1) else n

Вызов factorial на 100, я получаю 0 из-за целочисленного переполнения. Мне нужен тип для больших целых чисел.


ats
person cs320 bucas    schedule 09.01.2018    source источник


Ответы (2)


Вы можете использовать неограниченное количество типы точности intinf, основанные на библиотеке GMP. См. этот пример для intinf факториальная функция.

person Arets Paeglis    schedule 11.01.2018

В ATS есть API для различных функций в библиотеке GMP. А пакет atscntrb-hx-intinf представляет собой удобную оболочку для этого API. Дополнительные сведения см. в следующем примере:

https://github.com/ats-lang/ATS-CodeBook/tree/master/RECIPE/HX-intinf

person Hongwei Xi    schedule 12.01.2018