title: Use cases for adjunctions in Haskell
body: <p>I have been reading up on <a href="https://en.wikipedia.org/wiki/Adjoint_functors" rel="noreferrer">adjunctions</a> during the last couple of days. While I start to understand their importance from a theoretical point of view, I wonder how and why people use them in Haskell. <a href="http://hackage.haskell.org/package/adjunctions-4.4/docs/Data-Functor-Adjunction.html" rel="noreferrer"><code>Data.Functor.Adjunction</code></a> provides an implementation and among its instances are  <a href="http://hackage.haskell.org/package/adjunctions-4.4/docs/src/Data-Functor-Adjunction.html#line-197" rel="noreferrer">free functor / forgetful</a> functor and <a href="http://hackage.haskell.org/package/adjunctions-4.4/docs/src/Data-Functor-Adjunction.html#line-163" rel="noreferrer">curry / uncurry</a>. Again those are very interesting from the theoretical view point but I can't see how I would use them for more practical programming problems. </p>
  
  <p>Are there examples of programming problems people solved using <code>Data.Functor.Adjunction</code> and why you would prefer this implementation over others?</p>