2011-10-18 10 views
3

私は、このリンクで捕虜などの機能を通じて、SMLで大きな整数で計算を実行したい:SMLでIntInfまたはLargeIntを使用するには?

http://www.standardml.org/Basis/int-inf.html#IntInf:STR:SPECしかし、どのように私は、この「ライブラリ」を使用するのですか?


UPDATE:答えを

感謝。わかった。また、私はこのように(そして、それは動作します)IntInfsのために私自身のPOW関数を作っ

Control.Print.intinfDepth := 10000; 

と印刷の制限を変更する必要がありました:

それはあなたが使用した実装に依存
fun power 0 = IntInf.toLarge 1 
    | power n = IntInf.toLarge 2 * power(n-1); 

答えて

3

が、一般的にあなたはInt.toLargeとLageInt/InfInfタイプにあなたのIntのを変換する必要があります。

(* 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-基準フラグとmltonによって与えられる):

val a: intInf 
val aa: intInf 
val b: int32 
val c: intInf 
val d: intInf 
関連する問題