我在OCaml工作,我使用的环境是Eclipe Mars。当我尝试使用List.iter [1.;3.;2.;-7.;4.;5.] ~f:(fun x -> update rsum x);;
时它给出一个错误,指出 Error: The function applied to this argument has type 'a list -> unit
This argument cannot be applied with label ~f#
重点是,这是一本书中的一个例子,非常适合他们,但当我尝试使用 ~f:
时,我不断收到此错误。 。有人可以解释一下为什么这不起作用吗?
如果我知道如何完成这项工作也会有所帮助。
最佳答案
波形符引入了名为 labelled argument 的功能。 。 OCaml 标准库有模块 List(其中声明的函数没有带标签的参数)和模块 ListLabels(使用它们)。
我的假设是,当作者使用另一个名为 Core
的标准
库时,您正在阅读 Real World OCaml。这个库有它自己的列表模块,并且这个库大量使用带标签的参数。所以,您可能忘记将此库加载到顶层。您可能需要解释 Eclispe 如何加载正确的库或在源文件顶部编写 module List=ListLabels
。
关于eclipse - OCaml 中的标签 ~f,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35247009/