Je commence à utiliser Prolog, et déjà j'ai rencontré problème avec un exemple simple en apparence. Voici mon fichier .pl:Undefined Procédure dans SWI-Prolog ne fonctionne pas
hacker(P) :- mountaindew(P), doesntsleep(P).
hacker(P) :- writesgoodcode(P).
writesgoodcode(jeff).
Puis, après que je charge le programme dans swipl, je le tester avec cette ligne à l'invite
writesgoodcode(jeff).
Je pensais que ce serait afficher vrai, mais je reçois cette erreur:
?- hacker(jeff).
ERROR: hacker/1: Undefined procedure: mountaindew/1
Exception: (7) hacker(jeff) ?
ce programme fonctionne très bien, mais cela ne résout pas mes problèmes:
hacker(P) :- writesgoodcode(P).
writesgoodcode(jeff).
$ swipl -s dumb.pl
% dumb.pl compiled 0.00 sec, 1,112 bytes
?- hacker(jeff).
true.
Quelqu'un peut-il expliquer pourquoi mon programme initial ne fonctionne pas? D'après ce que je comprends, Prolog devrait "ignorer" la première déclaration, car il ne dispose pas de suffisamment d'informations, et vérifiez la ligne suivante. Il a suffisamment d'informations pour cette deuxième ligne, et donc il devrait évaluer vrai. Toute aide ou un point dans la bonne direction serait génial. Merci.