Search code examples
computer-scienceterminologylanguage-design

What is the technical term for two functions with the same signature and same behavior, but different names?


When we say that one aspect of a program can be changed completely independently of another aspect, we say those things are orthogonal to one another.

I am looking for pretty much the opposite term. For example, it's a good idea in C++ if the copy-assignment operator has the same calling signature as the copy-constructor, and if they have identical effects (or are close enough not to care). Thus, one might say or write: "it is good class design in C++ to make the copy-constructor and assignment operator _______ to each other."

[EDIT] I'm asking for the computer-language concept related to the following statement: "these two functions have separate identities but similar roles, and therefore should have the same argument types, the same return types (if possible), and same (or highly similar) side-effects or behavior."

This question is not about C++, nor about object-orientation. I am looking for a more general Computer Science or mathematical concept here.


Solution

  • Do you mean two functions like this?

    f: T -> R g: T -> R

    For All x in T, f(x) == g(x)

    And accepting also same side effects (in math there are no side effects of a function)

    g and f are just equivalent functions.