In aptitude è possibile esprimere alcune ricerche particolarmente
complesse usando i bersagli espliciti. Nelle normali
espressioni di ricerca, non c'è modo di fare riferimento al pacchetto o alla
versione che viene testata in quel momento. Per esempio, supponendo che si
desideri cercare tutti i pacchetti P
che
dipendono da un secondo pacchetto Q
che a sua
volta raccomanda P
, ovviamente si deve iniziare
con un termine
. Il termine all'interno di
?depends
(...)...
, però, deve in qualche modo selezionare i pacchetti
che sono identici a quelli che stanno venendo testati da
. Quando più sopra si è descritto l'obiettivo
desiderato, si è risolto questo problema dando un nome ai pacchetti,
chiamandoli ?depends
P
e Q
; i
termini con bersagli espliciti fanno esattamente la stessa cosa.[17]
Un bersaglio esplicito viene introdotto dal termine ?for
:
Questo si comporta esattamente come modello
, ma
si può usare variabile
all'interno di
modello
per riferirsi al pacchetto o alla
versione la cui corrispondenza con modello
sta
venendo testata. Si può usare variabile
in due
modi:
Il termine ?=
trova corrispondenza esattamente con il pacchetto o la
versione indicati dalla variabile data. Specificatamente: se il termine
?for
corrispondente è limitato ad una particolare versione, allora
?=
trova corrispondenza o con quella versione (se ?=
è limitato)
o con tutto il pacchetto; altrimenti trova corrispondenza con qualsiasi
versione del pacchetto.
Per un esempio su come usare ?=
, vedere Esempio 2.2, «
Uso del termine ?=
.
».
Il termine
trova corrispondenza con
qualsiasi pacchetto o versione se il valore di
?bind
(variabile
,
modello
)variabile
fa corrispondenza con
modello
.
Per termini in stile ?
, è disponibile una forma
abbreviata. L'espressione
può essere sostituita da
?bind
(variabile
,
?termine
[(argomenti
)])?
.
variabile
:termine
(argomenti
)
Per un esempio su come usare ?bind
, vedere Esempio 2.3, «Uso del termine ?bind
».
[17]
I lettori attenti avranno notato che questo è essenzialmente un modo per
indicare esplicitamente la variabile nei λ-termini corrispondenti al
termine. Un termine tipico ha la forma «λ
x
. name-equals(x
,
modello
)»; fornirgli un bersaglio
esplicito rende x
visibile nel linguaggio di
ricerca.