pub fn flat_op<T, A>( f: fn(Vec<T>, T) -> A, a: &[Expression], b: &Expression, ) -> Option<A>where T: TryFrom<Literal>,