When working with implicit-encoded dependent function types, such as scalaz.Unapply and numerous Shapeless operations, you’d frequently like to acquire instances of those functions to see what types get calculated for them. For example, ++ on Shapeless HLists is driven by Prepend: def ++[S <: HList](suffix : S)(implicit prepend : Prepend[L, S]) : prepend.Out = prepend(l, suffix) So given some HLists, we can expect to be able to combine them in a couple ways. First, by using the syntax funct...