ATS中整数模运算符的名称是什么? 此外,给定正整数p,类型检查器是否知道 (x mod p)是一个小于p?
的自然数答案 0 :(得分:0)
您可以使用“%”和“mod”作为ATS中的模运算符
为了使编译器知道这一点,你可以构造像
这样的东西datatype MOD (int, int) =
| {i,j: int | i >=0 && j > 0 && i < j}
MOD0(i, j) of ()
| {i,j: int | i >=0 && j > 0 && i >= j}
MOD1(i, j) of (MOD(i - j, j))
(* ****** ****** *)
prfun
dmod
{n,m:int | n >= 0 && m > 0}
.<n>.
(i: int(n), j: int(m)) : MOD(n, m) =
if i < j then MOD0()
else MOD1(dmod(i - j, j))