pub fn revhook<A, B, C, D, Duo, Mono>(d: Duo, m: Mono) -> impl Fn(A, B) -> Dwhere Duo: Fn(B, C) -> D, Mono: Fn(A) -> C,