我在ocaml中实现数组时遇到了一些问题.例如,当在终端(konsole)和我输入时
let tab = Array.make 5 6;
Run Code Online (Sandbox Code Playgroud)
我有
val tab : int array = [|6; 6; 6; 6; 6|]
Run Code Online (Sandbox Code Playgroud)
作为输出.所以它创建了一个长度为5的数组,并用6填充所有的情况.好的,我理解那部分.但是当我在像kate这样的文本编辑器上输入它时,保存并编译它我得到这个错误:
Error: Unbound value Array.make
Run Code Online (Sandbox Code Playgroud)
我不明白为什么需要Array.make作为kate中的值,它将Array.make作为终端中的函数.我用".ml"扩展名保存了文件,然后用它编译ocamlc -o test name_of_file.有什么建议吗?谢谢.
我编译了你的程序,ocamlc它很好(使用OCaml 3.12.0).
当你尝试编译时,我猜你正在调用一个旧版本的编译器,也许是从一个Array.make仍然命名的时候Array.create.也许当您安装新版本时,您覆盖了一些文件(例如顶层)而不是其他文件(例如编译器).为了检查,通过比较给出的版本ocamlc -v和ocaml.
至于消息"Unbound value",在OCaml中,函数是值.实现者没有区分"不是函数的未绑定值"和"作为函数的未绑定值",但这不是问题的原因.问题的原因是Array.make根本没有约束.