modular programming in ocaml
===

I found something which I don't really understand while working on an `ocaml` project.<br/>
Suppose I'm using both the `Array` and `List` module in ocaml standard library. They both implement the fonction `length` but have differant type
In the `List` module, this is its type:

    length: a' list -> int

---
And in the `Array` module, it has the type:

    length: a' array -> int

But when I wanted you use both module in the same module I was implementing, via the `open` keyword. 

    open List
    open Array

When I tried to use the **length** function on a list, I had a type error during compilation.<br/>
Since, ocaml is a strong statically typed language, I'm wondering why the compiler didn't know I wanted the length function of the list module since I declared I was using both.