OCaml未绑定值List.assoc

Pep*_*epe 1 ocaml

我正在使用调用List.assoc的函数编译一个模块,它无法构建给我"Unbound value List.assoc"...我已经尝试了其他List函数并且它们工作正常,它在utop中也可以正常工作.

我可以通过使用corebuild和此代码编译ml文件来重现这一点

open Core.Std

let p = [(1,2);(2,3);(3,4)]
in List.assoc 2 p
Run Code Online (Sandbox Code Playgroud)

这是我的构建命令:

$ corebuild blah.byte + ocamlfind ocamlc -c -w A-4-33-40-41-42-43-34-44 -strict-sequence -g -bin-annot -short-paths -thread -syntax camlp4o -package bin_prot.syntax -package sexplib.syntax,comparelib.syntax,fieldslib.syntax,variantslib.syntax -package core -o blah.cmo blah.ml
File "blah.ml", line 5, characters 3-13: Error: Unbound value List.assoc Command exited with code 2.
Run Code Online (Sandbox Code Playgroud)

hca*_*rty 9

Core库取代了标准的OCaml List模块.当你用Core的模块open Core.Std掩盖OCaml的标准ListCore.Std.List.该Core.Std.List.assoc功能不存在.如果您没有Core.Std在utop中打开,那么您很可能仍在使用OCaml的标准库List模块.

Core确实提供了此功能的替代品List.Assoc.你可以在这里看到一些文档:https://ocaml.janestreet.com/ocaml-core/latest/doc/core_kernel.112.17.00/_build/lib/core_list/#/module : Assoc

List.Assoc.find_exn看起来它是stdlib的替代品List.assoc.