Well, you'd also need some execution-time infrastructure to evaluate an expression, if we allowed one there, but I agree it wouldn't be a tremendously complicated patch. We'd just not foreseen a good reason to support an expression ...
I afraid so it is not too simple.
There is problem with different target type when you do reduction from array to scalar and from array to array sometimes (for different slice) - so principally slice parameter should be immutable due immutable target type. Although current solution is not enough protection against same error, so then we allow a integer expression there.