ATS - объявление типа данных, параметризованное `int` - PullRequest
0 голосов
/ 09 января 2020

Я хотел бы объявить тип данных ATS, представляющий число с фиксированной точкой с заданной точностью и точкой. Вот как я думал, что это должно быть сделано:

datatype fixed (t:int, n:int) = {n:nat} fixed (t, n) of (t)

Здесь я думаю, что int представляет «сортировку» всех целочисленных типов, что удобно для выполнения арифметических операций c , {n:nat}, я думаю, объявляет, что fixed является зависимым типом, параметризованным натуральным числом n, которое будет указывать битовый индекс, для которого возникает точка. Тогда fixed (t, n) указывает, что сам тип параметризован выбранным нами целочисленным типом t и значением индекса n, и конструктор должен быть применен к некоторому элементу типа t. Понятно, что мое понимание неверно, потому что я получаю следующую ошибку после запуска acc arithmetic.dats:

arithmetic.dats: 6:60-61

6| datatype fixed (t:int, n:int) = {n:nat} fixed (t, n) of (t)
                                                            ^ 
error: the static expression is of the sort 
  t@ype

patsopt(TRANS2): there are [1] errors in total.
  exit(ATS): (1025)

Это странно для меня, потому что я намеревался t, чтобы быть int. Как правильно объявить этот тип данных?

1 Ответ

0 голосов
/ 18 марта 2020

Как насчет:

datatype fixed (int(*sort*)) = {n:nat} fixed (n) of (int(*type*))

Путаница может быть связана с тем, что int является как сортировкой, так и типом в ОВД.

...