4

在 ocaml 顶层,我可以通过键入以下命令来使用“bitstring”包:

#use "topfind";;
#camlp4o;;
#require "bitstring.syntax";;

let data = 0l;;
let bits = BITSTRING { data : 32 };;

但是,如果我创建一个 OCaml 脚本,例如 foo.ml :

#!/usr/bin/env ocaml
#use "topfind";;
#camlp4o;;
#require "bitstring.syntax";;

let data = 0l;;
let bits = BITSTRING { data : 32 };;

而且,如果我运行 OCaml 脚本,则会出现语法错误:

$ ./foo.ml
File "./foo.ml", line 8, characters 28-29: Error: Syntax error

我在这里想念什么?为什么相同的代码适用于交互式 shell,但不适用于脚本文件?

4

1 回答 1

4

我相信这是因为首先解析脚本文件,然后执行指令,因此它无法处理未知(尚未)的语法。

最简单的解决方案是使用ocamlscript

#! /usr/bin/env ocamlscript
Ocaml.packs := [ "bitstring"; "bitstring.syntax" ]
--

let data = 0l;;
let bits = BITSTRING { data : 32 };;
于 2014-01-20T03:44:06.090 回答