title: More specific explanation of an error in OCaml
body: <p>In the ensemble.mli file I have</p>
  
  <pre><code>type 'a t;;
  val ajouter : 'a -&gt; 'a t -&gt; 'a t 
  </code></pre>
  
  <p>And in the ensemble.ml file:</p>
  
  <pre><code>type 'a t='a list
  let rec ajouter =function a -&gt; function 
       [] -&gt;[a]
       |h::t -&gt; if h=a then h::t else h::(ajouter a t) 
  </code></pre>
  
  <p>After compilation: </p>
  
  <pre><code>ocamlc ensemble.mli ensemble.ml
  
  #load "ensemble.cmo"
  Ensemble.ajouter 1 [];;
  
  **Error: This expression has type 'a list but an expression 
     was expected of type int Ensemble.t**
  </code></pre>
  
  <p>I have to be able to give a detailed explanation about this error but I don't know exactly how to even fix it.So I really need your help.</p>