title: OCaml - Unbound record field
body: <p>I am new to OCaml and I am trying to convert some Haskell code to OCaml.</p>
  <p>I have the following code, where I explore the OCaml module system and functors.</p>
  <pre><code>module type F =
    sig 
      type 'a f
      val fmap : ('a -&gt; 'b) -&gt; 'a f -&gt; 'b f
    end
  
  module type FOO =
    functor (C : F) -&gt;
      sig
        type f 
      end
  
  module Foo : FOO =
    functor (C : F) -&gt; 
      struct
        type f = { foo : 'x . 'x C.f -&gt; 'x ;
                   bar : 'x . 'x C.f -&gt; 'x C.f }
      end
  
  module List = 
    struct
      include List
      type 'a f = 'a list
      let fmap = List.map
    end
  
  module Bar =
    struct
      include Foo (List)
      let ea = { foo = List.hd ; bar = List.tl }
    end
  </code></pre>
  <p>I keep having the error <code>Unbound record field foo</code>.
  The fact that <code>Foo</code> is a functor complicates matters, I feel like I cannot provide an annotation as I want to.
  What am I missing?</p>