Man kann leicht eine Prolog-Datei unter Verwendung consult/1
oder [filename].
konsultieren.Beratung eines Atoms
Angenommen, ich erzeuge Prolog Code als ein Atom. Ich kann in einem Prädikat diesen Code in eine Datei schreiben und dann konsultieren und ein Prädikat aus diesem Code abfragen, z.
example :-
generate_stuff(X),
write_to_file(X,'filename.pl'),
consult('filename.pl'),
predicate_in_filename.
Wie würde ich das gleiche tun gehen über, aber ohne X
(der Code) in eine Datei zu schreiben? Ich habe kein Glück mit assert
, die einen Begriff als Eingabe nimmt, während hier ich vollständigen Code in einem Atom habe.
'consult' behauptet die Begriffe, die in' filename.pl' sind. Sie könnten ein Prädikat schreiben, das durch "X" analysiert und die Begriffe bestätigt. Es gibt viele Prolog-Unterstützungsprädikate, um Begriffe zu extrahieren. Es ist nicht klar, wie Sie insgesamt 'generate_stuff/1' strukturiert haben, aber es könnte sinnvoller erscheinen, wenn 'generate_stuff' die Begriffe bei ihrer Erstellung durchsetzt, anstatt sie alle als eine riesige Zeichenfolge zu sammeln und anschließend zu analysieren . – lurker
@lurker Gibt es ein Prädikat, das 'X' in Terme zerlegt? "read_term_from_atom/3" analysiert nur die erste und es wäre mühsam für mich, etwas neu zu schreiben, das die Terme in einem Atom trennt. – Fatalize
Wenn Sie Ihren Code strukturieren, um Ihre "Sachen" als eine große Zeichenfolge zu erstellen (was ich gegen wenn möglich empfehlen würde), dann sehen Sie sich den SWI-Prolog an (http://www.swi-prolog.org)/pldoc/man? section = termrw) Prädikate. Erwägen Sie, 'X' als Stream und nicht als Datei einzurichten. – lurker