Il est possible d'éviter de l'utiliser en écrivant quelque chose de plus verbeux. Si je réécris Stephan's prédicat:
implication(X) :-
(
X = a,
write('Argument a received.'), nl
;
X = b,
write('Argument b received.'), nl
;
X \= a,
X \= b,
write('Received unknown argument.'), nl
).
(. Oui, je ne pense pas qu'il y ait un problème avec l'utilisation, mais mon patron était paranoïaque à ce sujet pour une raison quelconque, nous avons donc utilisé toujours l'approche ci-dessus)
Avec l'une ou l'autre version, vous devez veiller à couvrir tous les cas que vous avez l'intention de couvrir, en particulier si vous avez plusieurs branches. ETA: Je ne suis pas sûr que ce soit complètement équivalent à celui de Stephan, à cause du retour arrière si vous avez implication(X)
. Mais je n'ai pas d'interprète Prolog pour vérifier. Je l'ai lu pourrait être utilisé pour écrire des parseurs
SOMME -> O1 + O2 ou quelque chose ... –
C'est -> (notez les deux caractères), voir le Manuel SWI: http://www.swi-prolog.org/pldoc/doc_for?object=section%282 % 2c% 20% 274.12% 27% 2c% 20swi% 28% 27% 2fdoc% 2fManual% 2fDCG.html% 27% 29% 29 – starblue