Fra*_*itt 12 ocaml named-parameters utop
我目前正在使用"Real Word OCaml",其中一个带有命名/标记参数的基本示例似乎不起作用(使用utop 4.01.0):
let languages = ["OCaml"; "Perl"; "C"];;
List.map ~f:String.length languages;;
Run Code Online (Sandbox Code Playgroud)
生产:
Error: The function applied to this argument has type 'a list -> 'b list
This argument cannot be applied with label ~f
Run Code Online (Sandbox Code Playgroud)
鉴于:
List.map String.length languages;;
Run Code Online (Sandbox Code Playgroud)
产生预期的输出[5; 4; 1].
在核心语言中,与大多数语言一样,参数是匿名的.
这是否意味着我必须包含某种外部库才能使这段代码有效?
编辑
这是我的~/.ocamlinit文件(根据本书的安装说明):
(* Added by OPAM. *)
let () =
try Topdirs.dir_directory (Sys.getenv "OCAML_TOPLEVEL_PATH")
with Not_found -> ()
;;
#use "topfind"
#camlp4o
#thread
#require "core.top"
#require "core.syntax"
Run Code Online (Sandbox Code Playgroud)
正如@rafix的评论中所提到的,这可以通过put来修复
open Core.Std ;;
Run Code Online (Sandbox Code Playgroud)
第一.