Nommer les textes à leur définition autorise de s'y référer – plus justement à les employer – uniquement en les nommant, ce qui est donc simple. Le revers de la médaille est la gestion de ces noms : il faut en effet éviter, autant que possible, les problèmes de collision d'identificateurs ou de masquage impromptu de déclaration. La notion de contexte permet, dans une bonne mesure, d'éviter ces inconvénients.
Par exemple :
def a
= ...
def b
def a = ...
= ...
A l'évaluation de a, on ignore ce qui est défini dans l'environnement de b, il n'y a donc aucun problème de conflit de noms.
A l'évaluation de b, on aura, nécessairement, deux fois la visibilité d'un texte nommé a : on garantit alors que l'environnement propre de b sera placé prioritairement dans le contexte d'évaluation.
Ceci signifie qu'en cas de double définition, on prend la définition qui est "la plus proche" du texte qu'on évalue. Le choix est a priori arbitraire, mais reflétera sans doute assez clairement les intentions du programmeur.
Par exemple :
def x1
def u = "U1"
def x2
def u = "U2"
def v = "V2"
def x3
def v = "V3"
= (use u) (use v)
On peut légitimement penser qu'à l'évaluation de x3 on attend le résultat :
"U2" "V3"
Le contexte d'évaluation de x3 est :

la recherche s'effectuera alors "de gauche à droite" :
- la déclaration de v dans x3 masque celle qui est présente dans x2,
- la déclaration de u dans x2 celle de x1.