3
$ cat hello.ml 
#!/usr/bin/env ocamlrun ocaml

let rec main = print_string "Hello World!\n"

$ ./hello.ml 
Hello World!

$ ocaml hello.ml 
Hello World!

$ ocamlc -o hello hello.ml 
File "hello.ml", line 1, characters 0-1:
Error: Syntax error

$ ocamlopt -o hello hello.ml 
File "hello.ml", line 1, characters 0-1:
Error: Syntax error

Erlang と同様に、OCaml はスクリプト モードではシバンを許可しますが、コンパイル モードでは機能しません。OCaml には、コンパイル中に構文エラーを引き起こさない、より慣用的なシバンがありますか?

4

2 に答える 2

3

トップレベル コンパイラと OCaml コンパイラの両方で機能するディレクティブは私が知っているものではありませんが、中間オプションとして ocamlscript を使用できます。

http://martin.jambon.free.fr/ocamlscript.html

ocamlscript はバックグラウンドで ocamlfind + ocamlopt を使用して、実行時にコードを (再) コンパイルします。ocamlscript をインストールすると、以下を使用できます。

#!/usr/bin/env ocamlscript

トップレベルの互換性を直接提供するわけではありませんが、多くのプログラムで個別のコンパイル手順を回避できます。Web サイトには適切なドキュメントと例があります。

于 2011-09-29T18:41:15.540 に答える
2

sedプリプロセッサとして使用するだけです。最初の行のシバンを削除するには、見つかった場合は次を渡します。

-pp 'sed "1 s/^#\!.*$//"'

ocamlcまたはocamlopt.

于 2011-09-30T22:15:11.903 に答える