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