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

次に、呼び出し元、呼び出し先、およびビルド コマンドを変更して、コードを実行可能ファイルにコンパイルする方法を教えてください。

4

2 に答える 2

3

こんにちは.ml

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

call.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 に答える
3

この#useディレクティブは、トップレベル (インタープリター) でのみ機能します。コンパイルされたコードでは、モジュール名: を使用する必要がありますHello.length

Unix ライクなコマンド ラインからプログラムをビルドする方法を示します。これを環境に適応させる必要があります。

$ ocamlc -o call hello.ml call.ml
$ ./call
6
于 2015-02-27T04:19:17.053 に答える