Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo!

Ich soll zusammen mit einem Zweiten für die UNI einen Prolog Interpreter schreiben. Dabei hängen wir bei einem Problem. Eines der Features sollte sein, dass wir eine Ersatzfunktion für copy_term schreiben die das Selbe kann! Und hier hängen wir irgendwie. Wir haben uns gedacht wir schreiben alle Variablen in eine Liste und anschließend weißen wir neue zu. Kann uns vielleicht da jemand helfen, ob das richtig ist bzw. wie er das lösen würde!

Vielen Dank,

Florian

Geschrieben

Sehe ich das absolut richtig, dass ihr einen vollständigen (!) Prolog-Interpreter in Delphi schreiben sollt !? Ist das nicht etwas oversized, denn ihr müsstest dafür erst mal einen Parser mit entsprechend definierter Sprache entwerfen usw.

copy_term kopiert ein Prädikat und kopiert den Inhalt der Variablen neuen. AUs der OOP würde ich sagen es entspricht einem deep-copy des Objektes.

Oder sollt ihr einzelne Prologbefehle in Prolog selbst neu definieren, d.h. z.b. "kopiere_praedikat" schreiben, das dann den Inhalt kopiert?

HTH Phil

Geschrieben

Hallo!

Nein wir müssen nicht in Delphi einen Interpreter für Prolog schreiben! Ich habe nur kein passenderes Thema im Forum gefunden um die Frage zu stellen. Eine Aufgabe ist z.B.: für Prolog copy_term eine eigene Methode zu entwickeln. Wir haben gestern 6 Stunden daran gearbeitet und haben leide keine Lösung gefunden. Ich habe dann im Internet eine Methode gefunden verstehe Sie aber nicht ganz. Wäre nett wenn mir sie vielleicht jemand erklären könnte! Vielen Danke!

Florian



:- dynamic copies/1. 


copy(X,Y) :- assert( copies(X) ) , retract( copies(Y) ) . 


Geschrieben

Hallo!

Danke für die Antwort! Nun ich habe mir den Syntax angeschaut. Nur konnte das nicht wirklich mein Verständnis verbessern. Ich versuche jetzt einmal mein Problem zu erklären.

  1. Was bedeutet:
    :- dynamic copies/1
    ich bin bisher noch nie auf :- dynamic gestoßen, was bedeutet das, außerdem besteht eine Prozedur nicht immer aus 2 Teilen?
  2. Anschließend wird mit assert copies(x) ans Ende der Prozedur hinzugefügt.
  3. Dann wird die Klausel noch aus der Wissensnbasis gelöscht.

Wenn das so stimmt, dann ist mir alles klar bis auf copies(X) bzw. dynamic copies/1. copies/1 bedeutet, dass copies nur ein Argument erwartet!?

Ich tue mir mit Prolog nur schwer weil ich halt eher Java, PHP etc. gewöhnt bin!

Wäre dankbar für ne Antwort!

Leibe Grüße und schönen Sonntag,

Florian

Geschrieben

Hallo,

Wenn das so stimmt, dann ist mir alles klar bis auf copies(X) bzw. dynamic copies/1. copies/1 bedeutet, dass copies nur ein Argument erwartet!?

das "dynamic" bedeutet, dass das Prädikat "copies" entfernt bzw. hinzugefügt werden darf. Jedes Prädikat ist normalerweise statisch, d.h. wenn es vorhanden ist, darf es nicht verändert werden, aber genau das willst Du aber, also machst Du es dynamisch.

Das "/1" bedeutet, dass Du nur das Prädikat "copies" mit einem Argument dynamisch machst, theoretisch könntest Du ein Prädikat "copies/2" haben, was weiterhin statisch ist.

Ich tue mir mit Prolog nur schwer weil ich halt eher Java, PHP etc. gewöhnt bin!

logische Sprache != imperative Sprache. Denke nicht in Befehl für Befehl, sondern in logischen Zusammenhängen. Als Literatur kann ich Dir von Ivan Bratko "Prolog for AI" empfehlen.

HTH Phil

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...