title: Are Immutable.js data structures functors?
body: <p>Are Immutable.js data structures functors?</p>
  
  <p>My gut says yes:   </p>
  
  <pre><code>Map({ a: 1, b: 2 }).map(x =&gt; 10 * x)
  // Map { a: 10, b: 20 }
  </code></pre>
  
  <p>I'm looking for an in-depth explanation of the degree to which Immutable.js structures are functors. Do they follow both the identity and composition laws? Are all of the <code>Collections</code> functors or is it just <code>Maps</code>, <code>Lists</code>, and <code>Sequences</code>?</p>