Kompilacja Prologu do DLL

0

Niektóre pewne obliczenia i operacje stosunkowo łatwiej wykonać w Prologu niż w języku takim, jak Pascal lub C#.

Załóżmy, że w programie prologowym zdefiniujemy:

funkcja(A,B,C):-
f1(A,B),
f2(B,C).

Oznacza to, że wartości podstawione za zmienne A,B,C są w relacji "funkcja", czyli funkcja(A,B,C) jest prawdziwa w przypadku, gdy f1(A,B) i f2(A,B) jest prawdziwe. Funkcje f1 i f2 są zdefiniowane w programie, oczywiście główną funkcję też można zdefiniować.

Wywołanie "funkcja(1,2,3)" zwraca wartość prawda lub fałsz wedle definicji relacji dla podanych argumentów.
Natomiast wywołanie "funkcja(1,2,X)" zwraca wszystkie wartości, jakie można podstawić za X, żeby relacja była prawdziwa. Jak ktoś miał do czynienia z Prologiem, to wie o co chodzi.

W takim razie wywołanie funkcji postaci "funkcja(1,2,X)" można przedstawić jako funkcję X=funkcja(1,2), gdzie X jest listą wyników i zarazem wynikiem obliczeń logicznych w systemie prologowym.

Potrzebowałbym takiego kompilatora, że wczytuję program napisany w języku Prolog, definiuje listę przewidywanych wywołań i dostaję plik DLL z funkcjami, które można wykorzystać w pisanym przez siebie programie w C# lub Delphi.

0

to chyba tak nie działa...
możesz użyć np. zewnętrznego interpretera do wykonywania niektórych zadań. do wyboru jak na tą chwilę jest np. lua (delph, c++); php (php4delph - nie wiem czy jest jakiś wrapper dla c); python...
nie wiem czy znajdziesz coś a la prolog... chyba, że to: http://www.swi-prolog.org/

tu http://gollem.science.uva.nl/twiki/pl/bin/view/FAQ/WebHome masz sekcję: Using SWI-Prolog with C/C++

0

Może w GPrologu da radę. Tu w manualu jest przykład jak operować na programie który został skompilowany z mieszanych źródeł C i Prologa:
http://www.gprolog.org/manual/html_node/gprolog069.html

0

Tylko mówię o DLL, bo wtedy podobno (ja nigdy jeszcze nie robiłem DLL) można mieszać różne języki.

SWI-Plolog jest mi znany, ewentualnie wchodzi w grę taka opcja, że generuje sie lub piszemy plik tekstowy z programem w prologowym i uruchamia się środowisko, wczytuje program, wykonuje się zapytanie, którego wynik zrzuca się do drugiego pliku tekstowego. Rozumiem, że taka operacja byłaby z linii poleceń, w której byłaby nazwa poliku źródłowego, treść zapytania i nazwa pliku wynikowego. Oczywiście w programie głównym trzeba zrobić odpowiednią procedurę generującą plik źródłowy, linię poleceń i analizującą plik wynikowy.
Czy jest środowisko prologowe, które może w ten sposób działać, czyli wykonanie całego zapytania sprowadza się do odpowiedniego skonstruowania linii poleceń, a wynik zapytania jest w pliku tekstowym?

0
andrzejlisek napisał(a)

Tylko mówię o DLL, bo wtedy podobno (ja nigdy jeszcze nie robiłem DLL) można mieszać różne języki.

Oblukaj tego GProloga bo tam można mieszać nawet bez DLL, a samo DLL pewnie też można zrobić.

0

Witam wszystkich
Potrzebuje pomocy przy tworzeniu systemu ekspertowego do diagnostyki silników elektr w Prologu.
Ewentualny kontakt [email protected].

0
mario25 napisał(a)

Witam wszystkich
Potrzebuje pomocy przy tworzeniu systemu ekspertowego do diagnostyki silników elektr w Prologu.
Ewentualny kontakt [email protected].

Dział praca jest gdzieś indziej! Nie zaśmiecaj forum, dopisując się do innych tematów, tylko dlatego, że język ten sam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1