On page 88 of Atiyah-Macdonald's "Introduction to Commutative Algebra" there is an exercise about the Grothendieck group $K(A)$ of a noetherian ring $A$. In this context to every finite ring homomorphism $f: A \rightarrow B$ of noetherian rings there is an associated group homomorphism
$f_{!}: K(B) \rightarrow K(A)$
which is induced by restricting a finitely generated $B$-module via $f$ to a finitely generated $A$-module. Given two finite ring homomorphisms $A \stackrel{f}\longrightarrow B \stackrel{g} \longrightarrow C$ we get
$(g \circ f)_{!} = f_{!} \circ g_{!}$
What I am wondering about is: why do they put the "shriek" (i.e. the symbol "$!$") into the subscript when it behaves contravariantly?
On wikipedia they say that shrieks are used either to distinguish a functor from another similar functor, or in order to warn the reader that something which intuitively behaves covariantly (contravariantly) behaves instead contravariantly (covariantly).
So what of the two, if anything, applies in my case above? It's pretty clear to me that in my case the shriek has to "turn arrows around" because we succesively restrict scalars, first along $g$ then along $f$. Would one instead, a priori, expect that the Grothendieck group functor is covariant, or is there another, well-known functor, which could easily be confused with this one?