Verificamos de forma completamente cada posts de nuestro sitio web con la meta de enseñarte siempre la información veraz y actual.
Solución:
Si solo usa estos hechos dinámicos para implementar contadores, debe pensar si esta es la mejor manera de hacerlo. Usando assert/1
y retract/1
hace un código bastante lento.
Puede hacer que la variable de contador sea otro argumento de predicado que pase en su código (es posible que deba distinguir entre entrada y salida, así que tenga dos argumentos adicionales), o usar variables globales (que son características no lógicas, sin embargo, que a veces es un no-go).
Depende del sistema que estés usando. En YAP, B, GNU, SICStus, la directiva :- dynamic(counter/1).
tiene este efecto. Es decir, solo los hechos del archivo están presentes después de recargar.
En SWI, los predicados dinámicos se conservan como usted describe. Necesitas eliminarlos directamente con retractall/1
que retiene la información de que el predicado es dinámico.
Insertar
:- abolish(counter/1).
al comienzo de su archivo. Cuando haya terminado de probar, quítelo.
Si haces scroll puedes encontrar las interpretaciones de otros sys admins, tú igualmente eres capaz dejar el tuyo si lo crees conveniente.