我想通过此链接中的pow之类的函数在SML中使用大整数执行计算:

http://www.standardml.org/Basis/int-inf.html#IntInf:STR:SPEC

但是我如何使用这个“图书馆”?

更新:

感谢你的回答。我知道了。我还必须更改打印限制

Control.Print.intinfDepth := 10000;

我为IntInfs制作了自己的pow函数(它可以正常工作),如下所示:
fun power 0 = IntInf.toLarge 1
  | power n = IntInf.toLarge 2 * power(n-1);

最佳答案

这取决于您使用的实现,但是通常您需要使用Int.toLarge将Int转换为LageInt / InfInf类型:

(* will be types as an IntInf *)
val aa = 10983298432984329843298432984329843298432987987987432987987987432987
val a = IntInf.pow(aa,10);

(* explicit type as if some other constraint had enforced this*)
val b = 10 : int
val c = Int.toLarge b;

val d = IntInf.pow(c, b);

解释器中可能未解析变量aa。这取决于您使用什么。我已经在poly和mlton中对其进行了测试。

上面的代码获取类型(由带有-show-basis标志的mlton给出):
val a: intInf
val aa: intInf
val b: int32
val c: intInf
val d: intInf

08-20 04:43