title: How to create a type that implement IDictionary<'K, 'V> and IEnumerable<'V>
body: <p>I want to create a read-only keyed collection that implements IDictionary&lt;'K, 'V> and IEnumerable&lt;'V>. Taking the obvious approach I get the following error:</p>
  
  <p><code>This type implements or inherits the same interface at different generic instantiations 'IEnumerable&lt;'V&gt;' and 'IEnumerable&lt;KeyValuePair&lt;'K,'V&gt;&gt;'. This is not permitted in this version of F#.</code></p>
  
  <p>Is there a different way of achieving this?</p>
  
  <p><strong>EDIT</strong> - Since this seems to be an insurmountable limitation of F#, what would be an idiomatic way of achieving this? One thought that comes to mind is providing members that return the desired view of the data, e.g., member x.List : IList&lt;'V> and member x.Dict : IDictionary&lt;'K, 'V>. Object expressions could be used to provide the implementations. Any other ideas?</p>