title: When are higher kinded types useful?
body: <p>I've been doing dev in F# for a while and I like it.  However one buzzword I know doesn't exist in F# is higher-kinded types.  I've read material on higher-kinded types, and I think I understand their definition.  I'm just not sure why they're useful.  Can someone provide some examples of what higher-kinded types make easy in Scala or Haskell, that require workarounds in F#?  Also for these examples, what would the workarounds be without higher-kinded types (or vice-versa in F#)?  Maybe I'm just so used to working around it that I don't notice the absence of that feature.</p>
  
  <p>(I think) I get that instead of <code>myList |&gt; List.map f</code> or <code>myList |&gt; Seq.map f |&gt; Seq.toList</code> higher kinded types allow you to simply write <code>myList |&gt; map f</code> and it'll return a <code>List</code>.  That's great (assuming it's correct), but seems kind of petty?  (And couldn't it be done simply by allowing function overloading?)  I usually convert to <code>Seq</code> anyway and then I can convert to whatever I want afterwards.  Again, maybe I'm just too used to working around it. But is there any example where higher-kinded types <em>really</em> saves you either in keystrokes or in type safety?</p>