Programación lógica en C
-
22-10-2019 - |
Pregunta
Estoy tratando de implementar algunos algoritmos de planificación de IA en C, pero me quedé atrapado con el concepto básico :)
Antes de saltar al problema principal, intenté implementar un marco pequeño que respaldaría la lógica proposicional:
FORMULA f = PROPOSITION(a + 3 > 0);
FORMULA g = PROPOSITION(is_smaller_than(b, c));
f = AND(NOT(f), g);
Ahora, el problema es que me gustaría no evaluar las expresiones como 'A + 3> 0' en el momento de definir la fórmula, sino en alguna fase posterior:
bool res = EVALUATE(f);
Supongo que los cierres habrían sido útiles en este caso, pero desafortunadamente también me gusta seguir con C99.
Alguna idea ?
¿Qué tal extender esto a la lógica predicada?
El objetivo final (idealmente) sería construir una biblioteca de planificación de IA, que se puede conectar directamente a la aplicación y no recibir el problema como cadenas de programas.
Gracias
Solución
OK,
Como se comentó anteriormente, he resuelto el problema utilizando una estructura con puntero de método y datos en él. Esta es la forma más común de simular los cierres en C.
Mi implementación está disponible aquí:https://github.com/pmilosev/clumsy