Imagine you&#x27;ve got ten pieces you need to stick end to end<p><pre><code>    a b c d e f g h i j
</code></pre>
How many ways can you do that with a binary operation?  i.e. how many ways can you completely parenthesise that expression.  e.g.<p><pre><code>    ((a (((b (c d)) e) ((f g) h)) i) j)
</code></pre>
I haven&#x27;t worked it out exactly, but I think it&#x27;s about a trillion.<p>On the other hand, suppose your binary operation is associative.  How many different ways are there now?  Effectively one.<p>That&#x27;s a <i>huge</i> reduction in complexity.  The notion of associativity is extremely useful in developing composable programs.