Ocaml 如何呈现大屏幕?
我正在使用Ocaml 如何呈现大屏幕?,ocaml,bignum,Ocaml,Bignum,我正在使用big_inttype。我查看了OCaml的库pervisives 例如:在Int32 let t = 5l Printf.printf "%ld" t 如果我想声明它是一个big\u int,我如何定义t和哪个%?d?下面是一个顶级会话。如果使用编译器,#load指令将成为命令行链接选项: # #load "nums.cma" ;; # let t = Big_int.big_int_of_int 5 ;; val t : Big_int.big_int = <abstr&g
big_int
type。我查看了OCaml的库pervisives
例如:在Int32
let t = 5l
Printf.printf "%ld" t
如果我想声明它是一个
big\u int
,我如何定义t
和哪个%?d
?下面是一个顶级会话。如果使用编译器,#load
指令将成为命令行链接选项:
# #load "nums.cma" ;;
# let t = Big_int.big_int_of_int 5 ;;
val t : Big_int.big_int = <abstr>
# Printf.printf "%s" (Big_int.string_of_big_int t) ;;
5- : unit = ()
##加载“nums.cma”;;
#设t=Big_int.Big_int_of_int 5;;
val t:Big_int.Big_int=
最后,Big_int
模块非常陈旧和笨拙。接口可以追溯到caml light,其中模块系统是最基本的。这就是为什么每个函数名都会重复“big_int…”的原因。如果您现在选择的是大整数库,我会推荐它,它既现代又高效。Zarith的缺点是它是一个单独的下载(目前)。有几个用于OCaml的现代“大数字”库,所有关于GNU MP的接口:
我自己的mlgmp,它作为libgmp-ocaml随许多Linux发行版一起提供
Bertrand Jeannet的mlgmpidl(注意:mlgmp和mlgmpidl都向ocamlfind声明自己是Gmp包,因此存在奇怪的冲突)
扎里斯
ZArith更好有两个原因:
在分配GNUMP对象之前,它尽可能多地对机器整数执行计算
它在OCaml堆内分配GNU MP对象,这与通过malloc()
的正常分配方案不同,后者不太适合函数式编程
很抱歉提出了这个新问题,但是您如何进行编译的命令行链接?@DrXorile这是一个新问题,如果您将其作为一个大家都能看到的新问题提问,您可以在5分钟内得到答案ocamlc nums.cma t.ml
或ocamlopt nums.cmxa t.ml
。