OCaml shebang语法错误

时间:2011-09-29 18:03:02

标签: ocaml syntax-error shebang

$ 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在脚本模式下允许shebangs,但在编译模式下borks。在OCaml中是否有一个更惯用的shebang,在编译期间不会触发语法错误?

2 个答案:

答案 0 :(得分:3)

我不知道哪个指令适用于toplevel和OCaml编译器,但您可以使用ocamlscript作为中间选项。

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

ocamlscript在后台使用ocamlfind + ocamlopt在执行代码时(重新)编译代码。安装ocamlscript后,您可以使用:

#!/usr/bin/env ocamlscript

它不会为您提供直接的顶级兼容性,但它允许您避免使用许多程序进行单独的编译步骤。该网站提供了不错的文档和示例。

答案 1 :(得分:1)

只需使用sed作为预处理程序。要删除第一行上的shebang,如果找到,请传递:

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

ocamlcocamlopt