ocaml - 在 OCaml 中调用其他文件中的函数

标签 ocaml ocamlbuild

我有一个具有长度函数的 hello.ml:

let rec length l = 
    match l with
        [] -> 0
    | h::t -> 1 + length t ;;

使用函数的call.ml:

#use "hello.ml" ;; 

print_int (length [1;2;4;5;6;7]) ;;

在解释器模式 (ocaml) 中,我可以使用 ocaml call.ml 来获取结果,但是当我尝试使用 ocamlc 或 ocamlbuild 编译它时,出现编译错误。

File "call.ml", line 1, characters 0-1:
Error: Syntax error

那么,如何修改调用者、被调用者、构建命令,将代码编译成可执行文件呢?

最佳答案

#use 指令只适用于顶层(解释器)。在编译代码中,您应该使用模块名称:Hello.length

我将展示如何从类 Unix 命令行构建程序。你必须使它适应你的环境:

$ ocamlc -o call hello.ml call.ml
$ ./call
6

关于ocaml - 在 OCaml 中调用其他文件中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28756989/

相关文章:

ocaml - 带有子目录的 Oasis 构建配置

ocaml - 使用 "ocamlfind"使 OCaml 编译器和顶层查找(项目特定)库

compiler-errors - 未使用属性 'explicit_arity'

ocaml - 编译 OCaml 时不要链接所有标准库模块

F# 与 OCaml : Stack overflow

shell - OCaml中的多行shebang?

OCaml 空全局变量

OCaml的let多态实现

ocaml - 我可以使用 OCamlBuild 生成可在没有 OCaml 库的计算机上运行的 native 可执行文件吗?

ocaml - 用于简单 OCaml 项目的基本 Oasis 或 Opam 文件