First of all, sorry for my English.
I would like to know, when I want to define a new type (I'm currently developing a computer interpreted language), how can I determine which "functions" are fundamental operations for a particular type, and which "function" are external, in the sense that, I don't need this function to define the characterization of the type?.
Let me call "operations" to the "essential functions" of the type and "functions" to anything else that simply uses the type.
For example, we all agree (I suspect), that the sum, difference, product and division are good examples of "operations" that defines the type
integer for example, or
number in general, but an operation like
factorial is more a function.
The question is, in a more general or theoretical point of view, where is the line between "function" and "operation" for the intended purpose? For example, for more abstract types like domain-specifics data structures, auxiliary classes or something more difficult than a "number", how or which test can I perform to say: that's a good as operation, or that's better being a function.