Ich sehe keine echte Anforderung für eine fremdsprachige Schnittstelle für Ihre Aufgabe: Verwenden Sie Prolog IO, es ist einfach zu bedienen und effizient. Sie könnten auch mit nur Unterstützung von protocol/1 beginnen. Nur ein Kuss Beratung ...
Eine Fremdsprache-Schnittstelle ist obligatorisch, wenn Sie etwas in dieser anderen Sprache implementiert benötigen.
SWI-Prolog C++ interface es ist viel einfacher zu verwenden als C-Gegenstück und ermöglicht sowohl die Erweiterung der Sprache mit wirklich einfachen integrierten Codierungen als auch die Einbettung der Engine in eine eigenständige "Haupt". Und diese zwei Aspekte können elegant cohexieren: sagen wir für einen schnellen Prototyp, implementieren wir einfach die eingebauten und benutzen die oberste REPL-Ebene, während eine vollständige Anwendung die Engine starten kann, um sie als Logik-Engine zu verwenden und (hoffentlich über REPL getestet) Abfragen im Hintergrund.
Dann gibt es JPL Schnittstelle zu SWI-Prolog und Java. Ich weiß wenig darüber ... Ich habe ein Problem auf der SWI-Prolog-Mailingliste gesehen, hauptsächlich aufgrund der Komplexität der verschiedenen Threading-Modelle. Aber sicherlich funktioniert es.
Eine interessante Entwicklung tritt auf, um die IDE in Eclipse zur Verfügung zu stellen (PDT, Prolog Development tools). Ich denke, sie benutzen ihre eigene Java-Schnittstelle. Derzeit könnte eine bessere Wahl als JPL sein.
Aber die interessanteste Schnittstelle SWI-Prolog kann heute vorschlagen, es ist die HTTP-Server-Infrastruktur. Wenn Sie WEB-Client-Entwicklung (HTML/JavaScript/XML/RDF) kennen, haben Sie viele Tools, um Ihr Design in MVC Client/Server aufzuteilen. Prolog führt einen Web Service aus, und ein Rich Client interagiert mit dem Endbenutzer. Diese Architektur macht Ihre Anwendung bereit, lokal auch im Freien zu laufen.
Bitte beachten Sie die relevanten How To Abschnitt ... Ist keine einfache Aufgabe, aber (IMHO) eine sehr lohnende und langjährige.
Eine andere Option ist die Kommunikation mit Sockets. –
C# Schnittstelle funktioniert auch mit F #. – joel76