2016-05-23 132 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