Hm, I sort of ignored these when diving into ES6 at first, but they&#x27;re perfect for making extensible sum types<p><pre><code>    function match(t, matchers) {
      const variant = t[Symbol.for(&#x27;variant&#x27;)];
      return matchers[variant](t);
    }
</code></pre>
Previously one had to make the sum look something like<p><pre><code>    { _variant: String
    , _params: Obj
    }
</code></pre>
to ensure that you could work generically with them and not have the _params object accidentally clobber your variant. Underscore privates are nice, but... obviously a hack.