"function that takes one argument and returns one value of the same type" is the identity function.
If it's only the same _type_, but the value is not the same, then it's an endomorphism. The function definitions look the same `a -> a`.
string reversal, integer negation or toUpperCase are classical examples of endomorphisms.
Identity is a specific case of endomorphism.
The function which will compile as `a -> a` is the identity function.
identity, uppercase or negate are all endomorphisms, with identity being the only generic one.
"function that takes one argument and returns one value of the same type" is the identity function.