Логическое программирование в c
-
22-10-2019 - |
Вопрос
Я пытаюсь внедрить некоторые алгоритмы планирования искусственного интеллекта в C, но застрял с основной концепцией :)
Прежде чем перейти к основной проблеме, я попытался внедрить небольшую структуру, которая поддерживала бы логику пропозициональной системы:
FORMULA f = PROPOSITION(a + 3 > 0);
FORMULA g = PROPOSITION(is_smaller_than(b, c));
f = AND(NOT(f), g);
Теперь проблема в том, что я хотел бы не оценивать выражения, такие как «A + 3> 0» в момент определения формулы, но на некотором более позднем этапе:
bool res = EVALUATE(f);
Я думаю, что закрытие было бы удобно в этом случае, но, к сожалению, мне также нравится придерживаться C99.
Есть идеи ?
Как насчет того, чтобы расширить это на предикатую логику?
Окончательной целью (в идеале) будет создание библиотеки планирования ИИ, которая может быть напрямую подключена к приложению, а не для получения проблемы в виде строк программ полос.
Спасибо
Решение
ХОРОШО,
Как прокомментировано выше, я решил проблему, используя структуру с указателем метода и данными. Это наиболее распространенный способ моделирования закрытия в C.
Моя реализация доступна здесь:https://github.com/pmilosev/clumsy