为什么此OCaml代码不受值限制

为什么此OCaml代码不受值限制,ocaml,value-restriction,Ocaml,Value Restriction,我不明白函数(我的路径映射器)不受值限制 # let rec my_map ~f l = match l with [] -> [] | h::t -> f h::my_map f t;; val my_map : f:('a -> 'b) -> 'a list -> 'b list = <fun> # let my_path_mapper = my_map ["/usr/sbin"; "/usr/bin"; "/sbin

我不明白函数(我的路径映射器)不受值限制

# let rec my_map ~f l =
  match l with
    [] -> []
  | h::t -> f h::my_map f t;;
      val my_map : f:('a -> 'b) -> 'a list -> 'b list = <fun>
# let my_path_mapper =
  my_map ["/usr/sbin"; "/usr/bin"; "/sbin"; "/bin"; "/usr/games"; "/usr/local/games"];;
  val my_path_mapper : f:(string -> 'a) -> 'a list = <fun>
#让我记录我的地图~fl=
匹配
[] -> []
|h::t->f h::我的地图f t;;
val my_map:f:('a->'b)->'a list->'b list=
#让我的路径映射器=
我的地图[“/usr/sbin”;“/usr/bin”;“/sbin”;“/bin”;“/usr/games”;“/usr/local/games”];;
val my_path_mapper:f:(字符串->'a)->'a列表=
请告诉我为什么?

OCaml有一个“宽松的值限制”。您可以在这里阅读:

以下是先前关于StackOverflow的讨论: