我想在我的代码中使用日期和时间,所以我使用 opam 加载了日历库。我有一段简单的代码来演示问题(example.ml):
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
在我看来,编译器正在寻找日期类型的 Date 构造函数。
我做错了什么?
你想使用的函数和数据类型在Date
模块中,所以改写你的代码我们得到(我也冒昧地重写了输出短语并插入了缺少的括号):
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 = %in" (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