1

我有一个具有长度函数的 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

那么,如何修改caller、callee、build命令将代码编译成可执行文件呢?

4

2 回答 2

3

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

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

$ ocamlc -o call hello.ml call.ml
$ ./call
6
于 2015-02-27T04:19:17.053 回答
3

你好.ml

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

呼叫.ml

open Hello

let () = print_int (Hello.length [1;2;4;5;6;7]) ;;

建造

ocamlc -o h hello.ml call.ml   

或者

ocamlbuild call.native 
于 2015-02-27T11:17:18.047 回答