collect functions that produce/consume a type
proposal, see https://mail.haskell.org/pipermail/haskell-cafe/2018-November/130191.html
Yes, this is something I'd like. I envisage something like _ -> T to be produces T, and T -> _ to be consumes T.
The consumer can be _ -> ... -> T -> ... -> _, i.e., there is some nested left context t1 -> (t2 -> ...) that contains a consumer T -> .... But we would get this by currying automatically (hoogle already does this)?
Then one could think of (T, _) -> _, in general, the type T we want is some deep argument of nested type constructors. Generalized, it's about covariant vs. contravariant argument positions ... that's the distinction we are already making for -> ?
I'd be happy with any variant that works.