title: What are some compelling use cases for dependent method types?
body: <p>Dependent method types, which used to be an experimental feature before, has now been <a href="https://lampsvn.epfl.ch/trac/scala/changeset/25859" rel="noreferrer">enabled by default in the trunk</a>, and apparently this seems to have created <a href="http://twitter.com/#!/milessabin/status/127160650249154560" rel="noreferrer">some excitement</a> in the Scala community. </p>
  
  <p>At first look, it's not immediately obvious what this could be useful for. Heiko Seeberger posted a simple example of dependent method types <a href="https://gist.github.com/1303276#comments" rel="noreferrer">here</a>, which as can be seen in the comment there can easily be reproduced with type parameters on methods. So that wasn't a very compelling example. (I might be missing something obvious. Please correct me if so.)</p>
  
  <p>What are some practical and useful examples of use cases for dependent method types where they are clearly advantageous over the alternatives? </p>
  
  <p>What interesting things can we do with them that weren't possible/easy before? </p>
  
  <p>What do they buy us over the existing type system features?</p>
  
  <p>Also, are dependent method types analogous to or drawing inspiration from any features found in the type systems of other advanced typed languages such as Haskell, OCaml?</p>