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