It's less about implementing what's easy, and more about implementing what we know for sure will provide user value.
Given that in the expression you used, the variables 'a' and 'b' have undefined values, there's still a chance that we're missing a large chunk of context for successful implementation.
Could you explain what 'a' and 'b' represent?
Where would users find values for 'a' and 'b'? (are they columns?)
What is the use case for partitioning by (a+b)/2?
How frequently will people partition this way?
It's possible to design for the range and list partitions and know we can achieve success because we understand how users would go through this workflow. Not sure about expressions.