我想通过此链接中的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);
答案 0 :(得分:3)
这取决于您使用的实现,但通常需要使用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
答案 1 :(得分:0)
-fun prod(a:IntInf.int,b:IntInf.int):IntInf.int = a + b;
val prod = fn:IntInf.int * IntInf.int - > IntInf.int
例如
- >关于如何表示一个大整数:IntInf.int作为函数内的参数