2017-05-27 1 views
0

In swi-prolog, lud ich eine Datei, die diese gerade hat:Erste ERROR: Nicht definierte Verfahren in Prolog

% -*- Mode : Prolog -*- 

sunny. 

Im Terminal, wenn ich

?- sunny. 

tun, sagt es true. Aber wenn ich

?- fff. 

Ich erwarte, dass es false zu sagen, aber es sagt stattdessen

ERROR: Undefined procedure: fff/0 (DWIM could not correct goal) 

Diese Seite http://www.doc.gold.ac.uk/~mas02gw/prolog_tutorial/prologpages/facts.html wenn das Beispiel mit foggy. tun, heißt es Ausgabe no sein sollte, aber ich bekomme ein Error.

Weiß jemand, was los ist?

Dank

+3

Dieses Tutorial muss aus den 1970er Jahren stammen. Heute erzeugen Prologs eher einen Fehler, der in vieler Hinsicht viel besser ist. Wenn Sie jedoch dieses Verhalten wirklich wollen (und etwas in [psychedelischem Licht] nicht vergessen (https://www.youtube.com/watch?v=jNlcK4fDxRM)), sagen Sie einfach: 'set_prolog_flag (unknown, fail) .' – false

+2

Prolog hat keine Ahnung was 'fff' ist. Sie könnten tun, was @false vorschlägt, wenn Sie möchten, dass ein unbekanntes Prädikat nur fehlschlägt (was übrigens dazu führen könnte, dass Sie in größeren Programmen keine typografischen Fehler finden). Oder Sie können bestimmte Prädikate als dynamisch deklarieren, zB ': - dynamisch (fff/0) .' – lurker

Antwort

2

Sie sagen Prologs einen Befehl auszuführen, der nicht existiert. Wenn Sie eine Datei mit nur haben waren:

weather(sunny). 

dann den Befehl ausführen

weather(foggy). 

würde return false.