ATS中模运算符的接口是什么?

时间:2018-01-23 00:40:49

标签: ats

ATS中整数模运算符的名称是什么? 此外,给定正整数p,类型检查器是否知道 (x mod p)是一个小于p?

的自然数

1 个答案:

答案 0 :(得分:0)

  1. 您可以使用“%”和“mod”作为ATS中的模运算符

  2. 为了使编译器知道这一点,你可以构造像

    这样的东西
    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))