脚本中的ocaml bitstring

时间:2014-01-20 03:17:57

标签: ocaml ocaml-toplevel

在ocaml toplevel中,我可以通过输入以下命令来使用“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,但不适用于脚本文件?

1 个答案:

答案 0 :(得分:4)

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

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

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

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