Programmation logique en C
-
22-10-2019 - |
Question
Je suis en train de mettre en œuvre des algorithmes de planification AI en C, mais est resté coincé avec le concept de base :)
Avant de sauter au problème principal, j'ai essayé de mettre en œuvre un petit cadre qui appuierait la logique propositionnelle:
FORMULA f = PROPOSITION(a + 3 > 0);
FORMULA g = PROPOSITION(is_smaller_than(b, c));
f = AND(NOT(f), g);
Maintenant, le problème est que je voudrais ne pas évaluer les expressions comme « a + 3> 0 » au moment de la définition de la formule, mais dans une phase ultérieure:
bool res = EVALUATE(f);
Je suppose que la fermeture aurait été à portée de main dans ce cas, mais malheureusement je aime aussi de coller à C99.
Toute idée? Que diriez-vous d'étendre cette logique à prédicat?
Le but final (idéalement) serait de construire une bibliothèque de planification AI, qui peut être directement branchée à l'application, et de ne pas recevoir le problème sous forme de chaînes de programme BANDES.
Merci
La solution
OK,
As commented above I have solved the issue by using a structure with method pointer and data in it. This is the most common way of simulating closures in C.
My implementation is available here: https://github.com/pmilosev/clumsy