usedef)refrefUne référence à un texte ne s'intéresse pas à la représentation du texte nommé en référence mais à l'environnement de définition de ce texte :
Ce sera la seule différence – tout à fait d'importance cependant – entre utilisation (use) et référence (ref). En particulier, la recherche des textes ou la construction du contexte d'évaluation seront semblables dans les deux cas.
On remarquera qu'il s'agit très précisément de la dualité d'interprétation d'une classe d'un Langage Orienté Objet : une classe est un type instanciable (ici : par utilisation) ou un module exportant des propriétés (ici : par référence).
Par exemple :
(use uti)
def uti "XCB3" ":=" "2.0" ";"
def var = "XCB3"
def cst = "2.0" (ref uti)
= (use var) ":=" (use cst) ";" env uti
def var = "XCB3"
def cst = "2.0"
le texte uti vu comme un type : (use uti) retourne une suite de chaînes de caractères ;
le texte uti vu comme un type : (ref uti) retourne un environnement de définitions.
Un exemple de référence :
def txt
ref uti
= "IF " (use var) "<>0 THEN" "^M"
(use var) ":=" (use cst) ";" "^M"
"END IF;" "^M"
texte évalué ou encore
"IF " "XCB3" "<>0 THEN" "^M" IF XCB3<>0 THEN
"XCB3" ":=" "2.0" ";" "^M" XCB3:=2.0;
"END IF;" "^M" END IF;
l'environnement des définitions de txt est simplement une référence au texte uti, l'environnement des définitions de txt est donc exactement l'environnement des définitions de uti – de ce fait, le texte txt évalué a la visibilité des textes définis localement au texte uti, soit ici les textes var et cst.