I just tried it. You can implement fold with `f: (HList, U) => F[HList,U]` and cast `HCons#fold`'s result to `Fold[U,F,Z]`. I think I like the `TypedFunction2` better then. It's more explicit.