We call all return types return types", but distinguish two kinds of return types, the as type and the of type, because the of type is normally an official named type and declares the official interface to the routine, while the as type is merely a constraint on what may be returned by the routine from the routine's point of view.