2011-01-21 3 views
8

J'ai écrit ce prédicat Prolog:avertissement Prolog

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

il fonctionne bien, mais j'ai cet avertissement:

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

ce que je peux faire pour l'éviter?

Répondre

16

L'avertissement vous indique que vous avez une variable utilisée une seule fois dans cette clause de la liste des prédicats (dans ce cas, la deuxième clause).

Pourquoi vous en avertit-il? Parce que c'est plus que souvent que vous avez mal orthographié le nom de la variable. Le code résultant lorsque vous mal orthographiez une variable est également un programme prologue valide, donc le débogage serait douloureux s'il ne vous avertit pas.

Si vous n'utilisez pas cette variable (X), vous pouvez utiliser une variable anonyme à la place. Pour utiliser une variable anonyme, vous devez utiliser _ comme terme au lieu d'un nom de variable.

Dans votre exemple, il serait:

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

Gusbro est tout à fait exact. Lorsque vous utilisez une variable seulement une fois vous obtiendrez une variable singleton. Votre programme est toujours syntaxiquement correct, mais Prolog suppose que vous avez fait une erreur en tapant votre code. La variable de soulignement sera toujours unifiée comme vraie si elle reçoit une réponse.