As far as my understanding of function in Mathematica, its core is pattern match, but why f[{a,b,c}] (when f is defined) can work correctly? in my understanding, f[{1,2,3,4}] correspond to f[{x_,y_,z_,w_}]:=
btw, a related question is what is difference of /@ and @?

Listableattribute in the documentation. You might also find this question and string of answers useful: 18393 – N.J.Evans Jan 09 '23 at 13:09x_gets matched to the entire list. Remove the braces, if these are supposed to be four arguments. The provided list is squared. SeeAttributes[Power]. TheListableattributes applies the square to each element of the list. SimilarltPlusadds1to each element of theList. – Syed Jan 09 '23 at 13:16Listableis not yet necessary at this stage of understanding. The direct answer to the question is that_matches any expression (including a list), not just numbers, as you seem to assume.x_is just a named version of_. Note that arithmetic works on lists, e.g.{1,2,3}^2evaluates to{1,4,9}. Recommended readings: http://reference.wolfram.com/language/tutorial/Expressions.html https://reference.wolfram.com/language/tutorial/Patterns.html – Szabolcs Jan 09 '23 at 13:59