title: Why are polymorphic messages so much more powerful in practice than the combination of unification and backtracking?
body: <p>One way of looking at the history of programming language design is that there was a revolution with the introduction of the subroutine. Twenty or thirty years later, two refinements of the subroutine call were seriously considered:</p>
  
  <ul>
  <li>Polymorphic messages</li>
  <li>Unification and backtracking</li>
  </ul>
  
  <p>I've just been programming in Prolog after a 20 year hiatus and realizing just how incredibly powerful unification and backtracking are. However, polymorphism won. Why?</p>