2016-05-23 165 views
0

我想在我的代碼中使用日期和時間,所以我已經使用opam加載了日曆庫。我有一個簡單的代碼演示該問題(example.ml):據ocaml未綁定構造函數類型定義的錯誤

open CalendarLib 

type datefun = date -> int 

let run_datefun (f : datefun) (d : date) = (f d) 

let() = 
    let mydate = make 2016 5 23 in 
    printf "Day of week = %i" run_datefun days_in_month mydate 

,我可以看到日曆days_in_month方法具有date -> int類型簽名。

當我嘗試和編譯代碼(corebuild -pkg calendar example.byte)我得到以下錯誤:

File "example.ml", line 3, characters 15-19: 
Error: Unbound type constructor date 

這似乎對我來說,編譯器正在尋找一個日期構造函數的日期類型。

我在做什麼錯?

回答

2

你想使用的功能和數據類型是Date module內,所以改寫你的代碼,我們得到(我也採取了改寫輸出短語的自由和插入缺少的括號內):

open CalendarLib 

type datefun = Date.t -> int 

let run_datefun (f : datefun) (d : Date.t) = (f d) 

let() = 
    let mydate = Date.make 2016 5 23 in 
    Printf.printf "# of days in current month = %i\n" (run_datefun Date.days_in_month mydate) 

一個小測試(順便說一句,你不需要corebuild這個):

$ ocamlbuild -pkg calendar example.ml example.byte 
Finished, 3 targets (3 cached) in 00:00:00. 

$ _build/calendar.byte 
# of days in current month = 31