如何避免在Ocaml中隐藏stdlib模块?

hug*_*omg 2 ocaml ocaml-core

我有一个程序使用BytesOcaml标准库中的Core_kernel.Std模块,并打开文件顶部的模块

open Core_kernel.Std

...

   let let buf = Bytes.make bom_len '\x00' in
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是最新版本的Core_kernel引入了一个新的Bytes模块,该模块隐藏了标准库中的模块,导致Unbound value Bytes.make编译错误.

有没有办法解决这个命名问题,而没有摆脱open文件的顶部?如果我这样做,就需要改变很多东西.

ant*_*oyo 5

您可以为Bytes模块提供替代名称:

module B = Bytes

open Core_kernel.Std

let buf = B.make 10 '\x00'
Run Code Online (Sandbox Code Playgroud)

然后做一个在你的代码搜索替换改变BytesB.

另一种解决方案是避免使用open,但我猜你的代码需要进行大量更改.