OCaml未绑定值List.assoc

时间:2015-06-08 17:59:47

标签: 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

这是我的构建命令:

$ 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.

2 个答案:

答案 0 :(得分:9)

Core库取代了标准的OCaml List模块。当您open Core.Std使用Core的List模块掩盖OCaml的标准Core.Std.List时。 Core.Std.List.assoc功能不存在。如果您未在utop中打开Core.Std,那么您很可能仍在使用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

答案 1 :(得分:0)

API已更改为:

List.assoc 1 p 

查看此: http://caml.inria.fr/pub/docs/manual-ocaml/libref/List.html