Procedures As Arguments

Suppose we want a procedure called arithmetic to take three arguments: an arithmetic operator and two operands:
     (arithmetic + 3 4)	⇒ 7
     (arithmetic * 3 4)	⇒ 12
     (arithmetic remainder 30 4) ⇒ 2
One way:
     (define arithmetic
       (lambda (operate op1 op2)
         (cond ((equal? operate +) (+ op1 op2))
               ((equal? operate *) (* op1 op2))
               ((equal? operate remainder) (remainder op1 op2)))))

Q: Why is arithmetic inconvenient?