Datei-Stream-Manipulation PROLOGPROLOG File Stream Manipulation; Termextraktion für die Verarbeitung
ich auf einem fallbasierten Subsystem gerade arbeitete für akademische, dass die Beratung ist die Lage, ein neues Schüler-Profil zu nehmen (Transkript) und vergleichen Sie es mit Datenbank von student_profiles in um die beste Übereinstimmung zu finden, wenn nicht die genaue Übereinstimmung.
Ich bin immer noch nicht sehr vertraut mit der Sprache und ich eine Datei zu öffnen versucht und extrahieren eine spezifische Prädikat des
student_profile/4 : student_profile(L1, name, L2, L3)
sagen lassen, die in student.pl
gefunden wird.
Sobald ich das Prädikat aus der .pl-Datei extrahiert haben, möchte ich der Lage sein, es zu einer Variablen zuzuweisen und spaltete es so kann ich das erste Argument extrahieren (in diesem Fall L1
) zu einige Berechnungen . Diese
ist, was ich habe, so weit:
Ich habe die Datei geöffnet, und ich bin in der Lage, die gesamte Liste von Prädikaten sehen in dem Schüler-Profil oder Transkript gefunden.
load :- open('h:/AAS/Novel_Profiles/vivian.pl', read, Stream),
read(Stream, X),
read_data(Stream, X, StudentP),
write(StudentP),
close(Stream).
read_data(_Stream, end_of_file, []) :- !.
read_data(Stream, X, [X|StudentP]) :-
read(Stream, Y),
read_data(Stream, Y, StudentP).
Ich habe Beispiele zusehen, wie ein Begriff zu extrahieren und für die weitere Verarbeitung verwendet werden, aber ich habe kein Glück hatte (oder vielleicht ist ich mit der richtigen Terminologie nicht).
Jede Hilfe würde sehr geschätzt werden.
Vielen Dank für Ihre schnelle Antwort, wäre es der Fall sein, dass das gleiche Verfahren gilt, wenn ich abfragen mag die Daten aus dem Programm? So etwas vor dem Schließen des Streams member_sp (StudentPred, StudentData) hinzufügen und natürlich unten definieren? – user1308665
Ja, Interpreter wie Prolog verwenden REPL (Read, Eval, Print, Loop) als eine allgemeine Methode für die Programmentwicklung. – CapelliC
Danke für deine Hilfe, nur noch eine Sache, die ich gerne stellen würde. Es mag sehr einfach erscheinen, aber ich verstehe es nicht ganz. Sobald ich die Datei gelesen habe; Die Daten, die ich brauche, haben die Form eines zusammengesetzten Begriffs: [Student_Predicate ([2d Vektor], Vivian, [genommen (Kurse), ...], []) | _A].Gibt es eine Möglichkeit, dass die Struktur des Begriffs heruntergebrochen und einzelnen Variablen zur Verarbeitung zugewiesen werden kann, wie: V = [Vektor], Name = vivian, Kurse = [genommen (Kurse), ...], Empfehlungen = [] ? Ich möchte dies innerhalb eines Skripts tun. Ich habe mir die (unvi) = ../2 und funktor/3 – user1308665