Почему этот код OCaml не подлежит ограничению значения

Я не понимаю, что функция (my_path_mapper) не подлежит ограничению значения.

# 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>

Пожалуйста, научи меня, почему?

1 ответ

Решение

У OCaml есть "смягченное ограничение стоимости". Вы можете прочитать об этом здесь:

Жак Гарри, ослабление ценностного ограничения

Вот предыдущее обсуждение Stackru:

Когда в OCaml вступает в действие смягченное ограничение ценностей?

Другие вопросы по тегам