модульное программирование в ocaml

Я нашел кое-что, чего не очень понимаю, работая над проектом ocaml.

Предположим, я использую модули Arrayи Listстандартной библиотеки OCaml. Оба они реализуют функцию length, но имеют разные типы. В модуле Listэто его тип:

length: a' list -> int

А в модуле Arrayон имеет тип:

length: a' array -> int

Но затем я хотел, чтобы вы использовали оба модуля в одном модуле, который я реализовывал, с помощью ключевого слова open:

open List
open Array

Когда я попытался использовать функцию lengthв списке, во время компиляции у меня возникла ошибка типа.
Поскольку OCaml — это язык со строгой статической типизацией, мне интересно, почему компилятор не знал, что мне нужна функция длины модуля списка, поскольку я заявил, что использую оба.

5
задан Paolo Moretti 31 July 2012 в 09:12
поделиться