Ensuite, le type d'un argument doit être égal au type du paramètre correspondant ou doit en être un sous-type ; par exemple, les invocations sommerEntiers("un", "dix") ou sommerEntiers(1.0, 10.0) sont illégales si la définition de sommerEntiers ne comporte pas de paramètres de type String ou de type flottant.
Enfin, le type de chaque expression de retour figurant dans le corps de la fonction doit être égal au type de retour de la fonction, ou en être un sous-type. Par exemple, le type de retour de sommerEntiers étant int, l'instruction de retour return résultat; serait illégale si résultat était déclaré de type double, car double n'est pas un sous-type de int.