У меня есть некоторая логика в программе на C++, которая не только безумно сложна, но и требует множества решений, для которых Prolog идеален. Это похоже на сценарий конфигурации брандмауэра, проверяющий ввод для действий, но иногда требуется более одного действия.
Я хочу что-то вроде этого:
class PrologEngine
{
LoadLogic(const char* filename) throw PrologException; // Load a file of prolog rules, predicates facts etc in textual format. Must be callable multiple times to load AND COMPILE (for speed) prolog rule files.
std::vector<std::string> Evaluate(const char* predicate_in_string_form = "execute(input, Result)") throw PrologException; Returns a vector of matching predicates in text form.
};
Ему не нужна возможность обратного вызова в C++.
AMI Prolog, кажется, понимает это, но он недоступен в Linux. Я пытаюсь использовать SWI-Prolog и могу найти только 2 примера и невероятно византийский API (мое мнение)
Может ли кто-нибудь указать мне пример, который близок к тому, что я ищу?