Я нашел кое-что, чего не очень понимаю, работая над проектом ocaml
.
Предположим, я использую модули Array
и List
стандартной библиотеки OCaml. Оба они реализуют функцию length
, но имеют разные типы. В модуле List
это его тип:
length: a' list -> int
А в модуле Array
он имеет тип:
length: a' array -> int
Но затем я хотел, чтобы вы использовали оба модуля в одном модуле, который я реализовывал, с помощью ключевого слова open
:
open List
open Array
Когда я попытался использовать функцию length
в списке, во время компиляции у меня возникла ошибка типа.
Поскольку OCaml — это язык со строгой статической типизацией, мне интересно, почему компилятор не знал, что мне нужна функция длины модуля списка, поскольку я заявил, что использую оба.