Nie widzę żadnych prawdziwych wymagań dla interfejsu języka obcego dla twojego zadania: użyj Prolog IO, jest łatwy w użyciu i wydajny. Możesz również zacząć od zwykłego wsparcia od protocol/1. Tylko rada KISS ...
Interfejs języka obcego jest obowiązkowy, gdy potrzebujesz czegoś wdrożonego w tym innym języku.
SWI-Prolog jest znacznie łatwiejszy w użyciu niż odpowiednik w języku C i umożliwia zarówno rozszerzenie języka z bardzo łatwym kodowaniem wbudowanym, jak i wbudowanie silnika w samodzielny "główny". Te dwa aspekty mogą z wdziękiem koheksować: powiedzmy o szybkim prototypie, po prostu implementujemy wbudowane i korzystamy z najwyższego poziomu REPL, podczas gdy pełna aplikacja może uruchomić silnik, który będzie używany jako silnik logiczny, i przesłać (miejmy nadzieję przetestować za pomocą REPL) zapytania w tle.
Następnie jest JPL do interfejsu SWI-Prolog i Java. Niewiele o tym wiem ... Widziałem problem zgłaszany na liście mailingowej SWI-Prolog, z powodu (głównie) złożoności różnych modeli wątków. Ale na pewno działa.
Pojawia się interesujący postęp, aby udostępnić IDE w środowisku Eclipse (PDT, narzędzia programistyczne Prolog). Myślę, że używają własnego interfejsu Java. Obecnie może być lepszym wyborem niż JPL.
Ale najciekawszy interfejs SWI-Prolog może dziś zaproponować infrastrukturę serwera HTTP. Jeśli znasz programowanie klienta WEB (HTML/JavaScript/XML/RDF), masz mnóstwo narzędzi do podziału projektu w MVC Client/Server. Prolog uruchamia usługę sieci Web, a bogaty klient wchodzi w interakcje z użytkownikiem końcowym. Ta architektura sprawi, że Twoja aplikacja będzie działać lokalnie i na wolności.
Proszę spojrzeć na odpowiednią sekcję How To ... Nie jest to proste zadanie, ale (IMHO) bardzo satysfakcjonujące i długotrwałe.
Inną opcją jest komunikacja za pomocą gniazd. –
Interfejs C# działa również z F #. – joel76