在OCaml中标记〜f

mea*_*ory 4 eclipse ocaml functional-programming

我在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:。有人可以解释一下为什么这行不通吗?如果我知道如何进行这项工作,那也会有所帮助。

Kak*_*adu 5

代字号引入了称为标记参数的功能。OCaml标准库具有模块列表(其中声明函数时没有带标签的参数)和模块列表标签(使用它们)。

我的假设是,当作者使用另一个standard名为的库时,您正在阅读Real World OCaml Core。这个库有它自己的List模块,这个库经常使用带标签的参数。因此,您可能忘记了将此库加载到顶层。您可能需要解释Eclispe如何加载正确的库或module List=ListLabels在源文件顶部编写。