This is just a random thought of a noob:
You can already use pairs, strings, hashtables in functional position, could this not be exploited likewise for numbers?

From the arc source: ... ((string? fn) (string-ref fn (car args))) ...

for numbers: ((number? fn) (apply (car args) fn (cdr args)))

You wouldn't have precedence, but it would work well with prefix notation since, if you make a mistake and use infix notation in a prefix expression, e.g. (+ 1 * 2 3), an error would be signalled.

I like this idea, because it doesn't involves special meaning of braces or Algol-style function calls. I just prefer

(2 + (3 * (sqrt 4)))

to

{2 + {3 * sqrt(4)}}

but maybe this is just me. You could even add a fancy analysis function to do precedence which would allow things like

(2 + 3 * (sqrt 4))

Maybe I am missing something that would create difficulties for this system, but I tried the modification suggested above and it actually worked, so I am inclined to think this could be a good way to implement infix math.

I thought about this a little bit and I suppose the simple way would be to determine precedence based on the particular functions the symbols are bound to, rather than on the symbols themselves. But wouldn't you really want symbol precedence?