This is perhaps pedantic, but . . .

Mathematica is a rules engine. When it evaluates an input, it applies all the rules it has, until it reaches an expression to which no further rules apply. Then it returns that result. These rules are the total of those built in and those you have added during the session by making assignments. For example Sin(x) is defined, where x is a number, by a built in rule. If you ask for Sin(3), you will get a numerical answer. But if you ask for Sin(x), where x is not defined, then it will return Sin(x). It can't evaluate this further because it does not have a numerical value for x. So it returns the fully evaluated answer, which is still Sin(x). However, if you had earlier made the assignment x=3, then it would also have a transformation rule for x. Applying that to Sin(X) gives Sin(3), and then it's built in rule is applied to give a numerical value.

In the case of Sin(3,2), there is no rule which applies. Mathematicas rules understand which arguments types are proper, and it has no rule called Sin which accepts two arguments, so it returns Sin(3,2). There is no rule to tranform the input. You will at times see this in functions you define. If you define foo(x_):=x, and then input foo(2,3), it will return foo(2,3).

NOTE THAT I INCORRECTLY USE () FOR ARGUMENTS BECAUSE THIS EDITOR STRIPS SQUARE BRACKETS.

Best regards,

David