我想通过此链接中的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