因此,我在我的程序中使用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模塊 –