我有一个程序,它使用Ocaml标准库中的Bytes
模块,还打开文件顶部的Core_kernel.Std
模块
open Core_kernel.Std
...
let let buf = Bytes.make bom_len 'x00' in
我遇到的问题是,最新版本的Core_kernel引入了一个新的Bytes模块,该模块遮蔽了标准库中的Bytes,这导致了Unbound value Bytes.make
编译错误。
有没有一种方法可以在不去掉文件顶部的open
的情况下解决这个命名问题?如果我这样做,那就需要改变很多事情。
您可以为Bytes
模块提供一个替代名称,例如:
module B = Bytes
open Core_kernel.Std
let buf = B.make 10 'x00'
然后在代码中进行搜索替换,将Bytes
更改为B
。
另一个解决方案是避免使用open
,但我想这需要对代码进行大量更改。
Core_kernel
提供了Caml
模块,该模块绑定了标准库中可用的所有内容。
所以,你可以把它写成
open Core_kernel.Std
...
let buf = Caml.Bytes.make bom_len 'x00' in
不幸的是,Caml.Bytes
仅在113.00.00
版本中添加,该版本尚未在OPAM中。