Objetivos explícitos de búsqueda.

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 ?depends(...). Pero el término introducido en ... necesita seleccionar paquetes idénticos a aquel emparejado con ?depends. Cuando he descrito esta meta traté con este tema dando los nombres de los paquetes, denominándolos 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.

Figura 2.13. Sintaxis del término ?for

?for variable: patrón

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:

  1. 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 ?=.

  2. El término ?bind(variable, patrón) coincide con cualquier paquete o versión si el valor de variable coincide con patrón.

    Hay una forma abreviada para términos de tipo ?. La expresión ?bind(variable, ?término[(argumentos)]) se puede sustituir por ?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.