I have a simple function that is supposed to only accept numeric values (i.e. complex/real numbers and constant symbols e.g. Pi, E). $$f(a,b,c)=a+b+c$$ **Edit**: I should have chosen a less simple function for this question as there might be approaches that will work for this simple function but not for functions in general. Please think of a more complicated function, such as $$f(a,b,c)=a^2 sin(b) log(c)$$ when you're thinking of an answer. I know that one can use [_?NumericQ][1] for each parameter such that only numeric values of that parameters are entered into the function (click [here][2] for more information on putting constrains on patterns). Clear[f] (* Define function *) f[a_?NumericQ, b_?NumericQ, c_?NumericQ] := a + b + c (* Test function *) f @@@ {{1, 2, 3}, {x, y, z}, {1, y, z}, {x, 2, z}, {x, y, 3}} ![Mathematica graphics](https://i.sstatic.net/i2WAL.png) However, for functions with more than 1 variables, I'm way too lazy to add NumericQ after each parameter. Using /; at the end of the function definition works, but I feel it's still too long and I have to retype the name of the parameters (a,b,c) at the end. Clear[f] (* Define function *) f[a_, b_, c_] := a + b + c /; And @@ (NumericQ[#] & /@ {a, b, c}) (* Test function *) f @@@ {{1, 2, 3}, {x, y, z}, {1, y, z}, {x, 2, z}, {x, y, 3}} ![Mathematica graphics](https://i.sstatic.net/Fepxx.png) Clear[f] (* Define function *) f[a_, b_, c_] := a + b + c /; VectorQ[{a, b, c}, NumericQ] (* Test function *) f @@@ {{1, 2, 3}, {x, y, z}, {1, y, z}, {x, 2, z}, {x, y, 3}} ![Mathematica graphics](https://i.sstatic.net/K3Hz4.png) Is there any way to express the condition only once, and without having to type the list of parameters one more time? I know that this is a frivolous question borne out of sheer laziness but I'd love to hear your ideas. [1]: http://support.wolfram.com/kb/3820 [2]: http://reference.wolfram.com/mathematica/tutorial/PuttingConstraintsOnPatterns.html