无法编译 ocaml .ml 文件
fail to compile ocaml .ml file
我有 4 个文件:
A.mli A.ml B.mli B.ml
使用 ocamlc -c
我编译了 A.mli
然后 A.ml
然后 B.mli
没有错误
如何在 B.ml
中使用代码格式文件 A
在文件的开头 B.ml 我有
#load "A.cmo"
并且此行无法使用 ocamlc -c
进行编译
我应该如何在我的代码中加载模块(编译代码)?
#load
命令仅适用于顶层(OCaml REPL)。
要在 B.ml
中使用来自 A.ml
的代码,您只需在 B.ml
中的代码中为名称添加前缀 A.
。编译器将找到 A.mli
的编译版本,并知道要做什么。
稍后您需要 link 所有文件一起生成可执行文件。您需要按依赖顺序列出它们(一个模块出现在依赖它的其他模块之前)。
这是一个小例子:
$ head a.mli a.ml b.mli b.ml main.ml
==> a.mli <==
val f : int -> int
==> a.ml <==
let f x = x + 10
==> b.mli <==
val g : int -> int
==> b.ml <==
let g x = A.f (x * 10)
==> main.ml <==
let main () = Printf.printf "%d\n" (B.g 12)
let () = main ()
$ ocamlc -c a.mli a.ml b.mli b.ml main.ml
$ ocamlc -o main a.cmo b.cmo main.cmo
$ ./main
130
(有些工具可以自动完成大部分工作,这使得 OCaml 开发不那么乏味。但这应该展示了基本思想。)
我有 4 个文件:
A.mli A.ml B.mli B.ml
使用 ocamlc -c
我编译了 A.mli
然后 A.ml
然后 B.mli
没有错误
如何在 B.ml
A
在文件的开头 B.ml 我有
#load "A.cmo"
并且此行无法使用 ocamlc -c
我应该如何在我的代码中加载模块(编译代码)?
#load
命令仅适用于顶层(OCaml REPL)。
要在 B.ml
中使用来自 A.ml
的代码,您只需在 B.ml
中的代码中为名称添加前缀 A.
。编译器将找到 A.mli
的编译版本,并知道要做什么。
稍后您需要 link 所有文件一起生成可执行文件。您需要按依赖顺序列出它们(一个模块出现在依赖它的其他模块之前)。
这是一个小例子:
$ head a.mli a.ml b.mli b.ml main.ml
==> a.mli <==
val f : int -> int
==> a.ml <==
let f x = x + 10
==> b.mli <==
val g : int -> int
==> b.ml <==
let g x = A.f (x * 10)
==> main.ml <==
let main () = Printf.printf "%d\n" (B.g 12)
let () = main ()
$ ocamlc -c a.mli a.ml b.mli b.ml main.ml
$ ocamlc -o main a.cmo b.cmo main.cmo
$ ./main
130
(有些工具可以自动完成大部分工作,这使得 OCaml 开发不那么乏味。但这应该展示了基本思想。)