2011-01-21 11 views
8

me escribió este predicado en el prólogo:de advertencia en el prólogo

list([]). 
list([X|L]) :- list(L). 

funciona bien, pero me dio esta advertencia:

**Warning: /Users/hw6.pl:2: 
      Singleton variables: [X]** % 

lo que puedo hacer para evitarlo?

Respuesta

16

La advertencia le indica que tiene una variable que se utiliza sólo una vez en que la cláusula de la lista de delitos (en este caso la segunda cláusula).

¿Por qué se le avisa de esto? Porque es más frecuente que haya escrito mal el nombre de la variable. El código resultante cuando escribe mal una variable también es un programa de prólogo válido, por lo que la depuración sería dolorosa si no lo advierte.

Si no va a utilizar esa variable (X), se puede utilizar una variable anónima en su lugar. Para usar una variable anónima, debe usar _ como el término en lugar de un nombre de variable.

En su ejemplo sería:

list([]). 
list([_|L]) :- list(L). 
2

Gusbro es exactamente correcto. Cuando usa una variable solo una vez, obtendrá una variable singleton. Su programa sigue siendo sintácticamente correcto, pero prolog asume que cometió un error al escribir su código. La variable de subrayado siempre se unificará como verdadera si recibe alguna respuesta.

Cuestiones relacionadas