Quelques recherches particulièrement complexes avec aptitude peuvent être
exprimées en utilisant les cibles explicites. Dans
une expression de recherche normale, il n'y a pas de façon de se référer au
paquet ou à la version qui est en train d'être testé. Par exemple, supposons
que l'on cherche tous les paquets P
qui dépendent
d'un second paquet Q
, tel que
Q
recommande
P
. Clairement, l'expression de recherche doit
commencer par
. Mais le terme à mettre
entre les parenthèses doit en quelque sorte sélectionner les paquets qui
sont identiques à ceux sélectionnés par ?depends
(...)
. Dans
la description de l'objectif ci-dessus, cela a été fait en donnant
explicitement des noms ?depends
P
et
Q
aux paquets. Les termes avec des cibles
explicites font exactement la même chose.[17]
Une cible explicite est introduite par le terme ?for
:
Cela se comporte exactement comme motif
, mais la
variable
peut être utilisée à l'intérieur du
motif
pour faire référence au paquet ou à la
version que ce motif
est en train de tester. Vous
pouvez utiliser la variable
de deux manières :
Le terme ?=
sélectionnera les paquets ou les versions indiquées par la
variable donnée. Précisément, si le terme ?for
est limité à une version
précise, alors ?=
sélectionnera soit cette version (si ?=
est
limité) soit le paquet entier. Sinon, il sélectionnera toutes les versions
du paquet.
Consultez l'Exemple 2.2, «
Utilisation du terme ?=
.
» pour un exemple
d'utilisation d'?=
Le terme
fera correspondre tout paquet ou
version si la valeur de la ?bind
(variable
,
motif
)variable
est en
correspondance avec le motif
.
Pour les termes de la forme ?
, une forme courte est
disponible. L'expression
peut être remplacée par
?bind
(variable
,
?terme
[(arguments
)])?
.
variable
:terme
[(arguments
)])
Consultez l'Exemple 2.3, « Utilisation du terme ?bind. » pour un exemple
d'utilisation de
.
?bind
[17]
Le lecteur astucieux aura remarqué qu'il s'agit essentiellement d'une façon
de nommer explicitement la variable avec les λ-termes correspondant
au terme. Un terme typique aurait la forme « λ
x
. name-equals(x
,
motif
) ». Donner une cible explicite rend
x
visible dans le langage de recherche.