2014-12-28 4 views
1

В Prolog можно вызвать R, используя library, недавно реализованный в вариантах SWI и YAP Prolog.Вызов Пролога от R

Вперед, есть ли способ вызвать Пролог изнутри R? В отсутствие прямого интерфейса R-Prolog, способного связывать термины Prolog с R так же, как Rcpp связывает объекты C++ с объектами R, есть ли какой-либо косвенный способ достижения этой цели (например, вызывать Prolog из кода C++, встроенного в R-код через Rcpp) ?

Под «вызовом» я имею в виду «связывание» прологовых терминов с объектами R, как это возможно для объектов C++ с использованием Rcpp, и выполнение прологовых запросов через обертки функций R, не прибегая к вызовам операционной системы.

+0

(Я не знаю R для таких подробностей, но) общий интерфейс, используемый из командной строки, должен быть достаточно хорош для многих случаев. Или именованные трубы. – false

+0

Возможно, я недостаточно определенно о том, что я имел в виду под «вызовом». Я надеюсь, что редактирование исправляет это. –

ответ

1

В SWI-Prolog и YAP вы можете использовать библиотеку real, написанную Nicos Angelopoulos и Vitor Costa Santos.

С помощью этой библиотеки можно не только вызвать R из Prolog, но вы даже можете делиться файлами данных между Prolog и R (например, списки Prolog < -> R-матрицы)!

Ранняя версия была published at PADL 2013. Текущая версия использует некоторые из недавних изменений в SWI7, например. использование точки для применения функций, чтобы сделать интеграцию между SWI-Prolog и R еще более плавной.

+0

R..eal - это ссылка, связанная с исходным вопросом. Спасибо за ваше предложение, я пойду на тестирование «общих» структур и вернусь с результатами. Однако имеющиеся исследовательские документы даже не предлагают, как инициировать запросы Prolog от R. –

0

Вы должны быть в состоянии назвать пролог интерфейс командной строки через system или system2 в R.

Если вы серьезно относитесь к этому, вы могли бы рассмотреть возможность написания пакета R с Rcpp, который вызывает пролог через SWI-Prolog.hC++ interface.

ps: OMG Я изучил программирование в прологе! Полностью забыл об этом!

0

Прошу прощения, я не программист R ... но у меня есть совет: use библиотека сервера SWI-Prolog HTTP.

Я вижу from a quick search, что R имеет HTTP-интерфейсы (с JSON), поэтому количество кода клея должно быть управляемым. С точки зрения архитектуры в настоящее время предпочтительным является построение API в SWI-прологе.

Смежные вопросы