Sommige bijzonder complexe zoekopdrachten kunnen in aptitude geformuleerd
worden met behulp van expliciete doelen. In normale
zoekexpressies bestaat er geen manier om te verwijzen naar het pakket of de
versie die momenteel getoetst wordt. Bijvoorbeeld, veronderstel dat u wenst
te zoeken naar alle pakketten P
die van een
tweede pakket Q
afhangen op zo een manier dat
Q
P
aanbeveelt. Het is
duidelijk dat u op weg moet gaan met de term
. Maar de term die in de plaats van de
?depends
(...)...
komt, moet op een of andere manier pakketten
selecteren die identiek zijn aan dat waaraan
getoetst wordt. Toen ik hierboven de bedoeling beschreef, loste ik dit op
door de pakketten een naam te geven en ze ?depends
P
en
Q
te noemen. Termen met expliciete doelen doen
exact hetzelfde. [17]
Een expliciet doel wordt met de term ?for
ingevoerd:
Dit werkt exact gelijk patroon
, maar
variabele
kan binnenin
patroon
gebruikt worden om te verwijzen naar het
pakket of de versie waarmee patroon
vergeleken
wordt. U kunt variabele
op twee manieren
gebruiken:
De term ?=
zoekt een exacte overeenkomst met het in de opgegeven
variabele vermelde pakket of versie. Specifiek: indien de overeenkomstige
?for
-term zich tot een specifieke versie beperkt, dan zal ?=
ofwel
met die versie (als ?=
beperkt werd) ofwel met het hele pakket een
overeenkomst opleveren. Anders zal het een overeenkomst opleveren met om het
even welke versie van het pakket.
Zie Voorbeeld 2.2, “
Het gebruik van de term ?=
” voor een voorbeeld van het gebruik
van ?=
.
De term
levert een overeenkomst op met
gelijk welk pakket of versie als de waarde van
?bind
(variabele
,
patroon
)variabele
beantwoordt aan
patroon
.
Voor termen in een ?
-stijl is een verkorte vorm
beschikbaar. De expressie
kan vervangen worden door
?bind
(variabele
,
?term
[(argumenten
)])?
.
variabele
:term
(argumenten
)
Zie Voorbeeld 2.3, “Het gebruik van de term ?bind
” voor een voorbeeld van het gebruik
van ?bind
.
[17]
Scherpzinnige lezers zullen opmerken dat dit in essentie een manier is om
expliciet de variabele in de λ-termen die aan de term beantwoordt, te
benoemen. Een typische term zou de vorm hebben “λ
x
. name-equals(x
,
patroon
)”. Dit een expliciet doel geven,
maakt x
in de zoektaal zichtbaar.