They&#x27;re not totally different between OCaml and Haskell. They&#x27;re based on the same concept from Category Theory: a mapping of objects and morphisms from one category to another. It&#x27;s just that Haskell functors are at the type level and OCaml&#x27;s functors are at the module level.<p>Apparently F# has support for neither style of functor--it doesn&#x27;t have parametric modules and it also doesn&#x27;t have typeclasses. So in F# `map` is defined independently for each type:<p><pre><code>   Set.map : (&#x27;a -&gt; &#x27;b) -&gt; &#x27;a Set -&gt; &#x27;b Set 
   Seq.map : (&#x27;a -&gt; &#x27;b) -&gt; &#x27;a seq -&gt; &#x27;b seq 
   List.map : (&#x27;a -&gt; &#x27;b) -&gt; &#x27;a list -&gt; &#x27;b list 
   Array.map : (&#x27;a -&gt; &#x27;b) -&gt; &#x27;a [] -&gt; &#x27;b []</code></pre>