2009-12-15 6 views
-2
not(A), not(D), not(B), not(not(D));not(not(A)), D, not(B), not(not(D));not(not(A)), not(D),B, not(not(D));not(not(A)), not 

(D), not(B), not(D). 

Il rapporte:Pourquoi ce code prologue est-il incorrect?

ERROR: f:/program files/pl/demo/test.pl:1: No permission to modify static_procedure `(;)/2'

Comment faire droit?

+3

Brisez cette seule ligne de code en autant de lignes que possible sans provoquer d'erreur de syntaxe. Au moins, le message d'erreur vous indiquera la ligne exacte à l'origine du problème. – Mathew

+0

-1 Veuillez lire une introduction à Prolog avant de poser d'autres questions comme celle-ci. – starblue

Répondre

2

Ce que vous avez donné est une requête Prolog qui doit être entrée dans l'invite de commande Prolog. Il semble que vous l'ayez placé dans un fichier source Prolog, ce qui ne fonctionnera pas. Les fichiers sources Prolog peuvent uniquement contenir faits et règles.

Un fait pourrait ressembler à ceci:

foo(bar). 

Une règle pourrait ressembler à ceci:

foo(X) :- baz(X). 

L'extrait que vous avez donné ne correspond pas à l'une de ces. Dans un fichier source Prolog, vous pouvez uniquement enchaîner plusieurs conjonctions ou disjonctions dans le corps d'une règle (c'est-à-dire la partie à droite du symbole :-).

Vous voudrez peut-être lire sur la façon d'écrire des prédicats prolog.

+0

Mais le fait est conjonctif, comment le faire fonctionner? – user198729

+0

Vous utilisez le caractère ';', cela signifie en fait une disjonction. Mais de toute façon, vous ne pouvez pas avoir des disjonctions ou des conjonctions dans la définition d'un fait. Vous devez définir une règle et la placer dans le corps. – nedned

+0

Mais dans mon cas, le fait est conjonctif.Say, je sais (a &^b) || (^ a & b) est vrai.Comment entrer un tel fait correctement dans prolog? – user198729

Questions connexes