因此,我在我的程序中使用Jane Street的Core.std来处理某些事情,但仍想使用标准OCaml映射。但是,当我调用像mem这样的函数时,它期待着Core.std版本的签名。我如何克服这个障碍?谢谢!OCaml标准映射vs.简街Core.std映射
open Core.Std
open Map
module PortTable = Map.Make(String)
let portTable = PortTable.empty
let string_add = (Int64.to_string packet.dlDst) in
PortTable.mem string_add portTable
这不会编译对我来说,因为它的预期Core.std的版本MEM的,不是标准之一:
Error: This expression has type string but an expression was expected of type
'a PortTable.t = (string, 'a, PortTable.Key.comparator_witness) t
我只是想使用标准之一。如果有人可以帮助,将不胜感激。
本地打开可能是值得在这里过,而不是在文件打开全球的一个模块,尤其是当一个模块有一个拥挤的命名空间 –
@NickZuber,核心库的设计在这样的洼地y,你应该打开Core.Std,因为它是覆盖标准库。 – ivg
@ivg我在这里指的是Map模块 –