Algunas búsquedas particularmente complejas se pueden expresar en aptitude
usando objetivos explícitos. En una expresión normal
de búsqueda no hay ninguna manera de referirse al paquete o a la versión que
se revisa en el momento. Por ejemplo, suponga que desea realizar una
búsqueda de todo paquete P
que depende de un
segundo paquete Q
de manera que
Q
recomienda
P
. Obviamente, necesita comenzar con el término
. Pero el término introducido en
?depends
(...)...
necesita seleccionar paquetes idénticos a aquel
emparejado con
. Cuando he descrito esta meta
traté con este tema dando los nombres de los paquetes, denominándolos
?depends
P
y Q
; términos con
objetivos explícitos harían exactamente lo mismo. [17]
Un objetivo explicito se introduce con el término ?for
.
Funciona de la misma manera que patrón
, pero
puede emplear la variable
dentro de
patrón
para referirse al paquete o versión con el
cual se empareja patrón
. Puede usar
variable
de dos maneras:
El término ?=
coincidiría de manera exacta con el paquete o la versión
indicada por la variable dada. De manera específica, si el termino ?for
correspondiente se limita a una sola versión, ?=
coincidiría o bien
con la versión (si ?=
se ha limitado) o con el paquete completo; de
otra forma, coincide con cualquier versión del paquete.
Véase Ejemplo 2.2, “
Uso del término ?=
.
” para ver un ejemplo de uso de
?=
.
El término
coincide con cualquier paquete
o versión si el valor de ?bind
(variable
,
patrón
)variable
coincide con
patrón
.
Hay una forma abreviada para términos de tipo ?
. La
expresión
se puede sustituir por
?bind
(variable
,
?término
[(argumentos
)])?
.
variable
:término
(argumentos
)
Véase Ejemplo 2.3, “Uso del término ?bind
.” para un ejemplo de uso de
?bind
.
[17]
El lector astuto habrá notado que, esencialmente, ésta es una manera de
nombrar de manera explicita la variable en los λ - términos
correspondientes al término. Generalmente, un término tiene la forma
“λ x
, el nombre es igual a
(x
, patrón
)”;
dando lugar a que un objetivo explicito x
sea
visible en el lenguaje de búsqueda.