Встроенный интерпретатор пролога / компилятор для Java - PullRequest
43 голосов
/ 30 ноября 2009

Я работаю над приложением на Java, которое должно делать некоторые сложные логические выводы в рамках своей функциональности. Я хотел бы закодировать мои логические выводы в Prolog или каком-либо другом языке программирования логики / ограничений вместо Java, так как я считаю, что полученный код будет значительно проще и более удобен в обслуживании.

Я гуглил для встроенных реализаций Java на Прологе и нашел их количество, у каждой из которых очень мало документации. Мои (скромные) критерии выбора:

  • должен быть встраиваемым в Java (например, может быть связан с моим java-пакетом вместо того, чтобы требовать каких-либо собственных установок на внешние программы)
  • простой интерфейс для использования из Java (для инициирования вычетов, проверки результатов и добавления правил)
  • Приведите хотя бы несколько примеров того, как его использовать
  • не обязательно должен быть прологом, но другие языки программирования логики / ограничения с вышеуказанными критериями тоже подойдут мне.

Какие у меня есть варианты и каковы их преимущества и недостатки?

Ответы [ 13 ]

2 голосов
/ 13 апреля 2010

Еще одна полезная опция, с которой я недавно столкнулся, - это JSetL. Это не пролог, но библиотека программирования ограничений для Java с поддержкой логических переменных, унификация, решение ограничений и недетерминизм.

http://prmat.math.unipr.it/~gianfr/JSetL/index.html

2 голосов
/ 03 марта 2010

Имеется Mini-Kanren для Scala , который дает вам встроенную реализацию JVM в простом, взломанном, современном языке логики программирования на основе предложений Хорна.

2 голосов
/ 21 января 2010

Prova 3.0 http://www.prova.ws близится к завершению. Это, однако, не просто еще один Prolog, а сочетание стилей программирования, в частности, полезное для простой двунаправленной интеграции Java, программирования реактивных агентов, интеграции с ESB, логики рабочих процессов и обработки событий. Эта версия полностью переписана с нуля, поэтому некоторые старые функции, такие как интеграция OWL, отсутствуют, но обязательно вернутся в следующей версии.

...