如果頂層已經啓動,可以動態加載庫:
# #load "nums.cma";;
# Num.mult_num;;
- : Num.num -> Num.num -> Num.num = <fun>
另一種可能性(這將爲所有第三方庫的工作,並會爲您管理路徑和依賴)是使用ocamlfind
。爲此,問題
#use "topfind";;
(或更好地把它放在你的~/.ocamlinit
文件中)。要加載一個圖書館,只是做
# #require "num";;
/usr/lib/ocaml/nums.cma: loaded
/home/user/.opam/system/lib/num-top: added to search path
/home/user/.opam/system/lib/num-top/num_top.cma: loaded
/home/user/.opam/system/lib/num: added to search path
這裏是乘法的一個例子(如果ocamlfind
- - 因此topfind
不可用,它使用opam安裝。):
# Num.(num_of_int 30 */ num_of_int 1234);;
- : Num.num = Num.Int 37020
的施工Num.(e)
是let open Num in e
的簡寫,並且使得在e
中使用不帶前綴的Num
功能成爲可能。下面是階乘的定義:
# let rec fac n =
let open Num in
if n =/ Int 0 then Int 1 else n */ fac (n -/ Int 1);;
val fac : Num.num -> Num.num = <fun>
您可以
# fac Num.(Int 100);;
- : Num.num = Num.Big_int <abstr>
嘗試,如果你使用#require
,它安裝了Num
值漂亮的打印機,以前的交互看起來是:
# fac Num.(Int 100);;
- : Num.num =
<num 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000>
這是更容易閱讀!
你在一個答覆中教給我很多ocaml!謝謝! –