2014-01-20 20 views
4

OCaml中頂層內位串,我可以通過鍵入以下命令使用「位串」包:ocaml的腳本

#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

我認爲這是因爲腳本文件首先被解析,然後指令被執行,因此它不能處理未知(但)語法。

,最簡單的解決方案是使用ocamlscript

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

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