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