我有一个程序使用Ocaml标准库中的Bytes
模块,并打开文件顶部的Core_kernel.Std
模块
open Core_kernel.Std
...
let let buf = Bytes.make bom_len '\x00' in
我遇到的问题是最新版本的Core_kernel引入了一个新的Bytes模块,它模糊了标准库中的模块,导致Unbound value Bytes.make
编译错误。
有没有办法解决这个命名问题而不删除文件顶部的open
?如果我这样做,就需要改变很多东西。
答案 0 :(得分:5)
您可以为Bytes
模块提供替代名称:
module B = Bytes
open Core_kernel.Std
let buf = B.make 10 '\x00'
然后在代码中执行搜索替换,以Bytes
更改B
。
另一种解决方案是避免使用open
,但我猜你的代码需要进行大量更改。
答案 1 :(得分:3)
Core_kernel
提供Caml
模块,用于绑定标准库中可用的所有内容。
所以,你可以把它写成
open Core_kernel.Std
...
let buf = Caml.Bytes.make bom_len '\x00' in
不幸的是,Caml.Bytes
只有113.00.00
版本中的added尚未在OPAM中。