Pregunta

Estoy desarrollando un algoritmo en un archivo .pl y lo examino con consultas en la ventana de comandos. Utilizo variables dinámicas y retracto / afirmo predicados.Y cuando modifico el archivo pl y hago clic en "recargar archivos modificados", tengo datos adicionales que no quiero.

por ejemplo, al principio tengo contador (0).

y hago algo, retiro y afirmo este contador, se convierte en contador (7).Luego, cuando recargo el archivo pl modificado, tengo ambos contador (0).y contador (7).

¿Cómo puedo prevenir esto y solo tener el contador (0)?al principio?

Gracias de antemano.

¿Fue útil?

Solución

Insertar

:- abolish(counter/1).

al comienzo de su archivo.Cuando haya terminado de probar, elimínelo.

Otros consejos

Si solo usa estos hechos dinámicos para implementar contadores, debe pensar si esta es la mejor manera de hacerlo.El uso de assert/1 y retract/1 genera un código bastante lento.

Puede convertir la variable de contador en otro argumento de predicado que pase en su código (es posible que deba distinguir entre entrada y salida, por lo que debe tener dos argumentos adicionales), o usar variables globales (que son características no lógicas,aunque, que a veces no es posible).

Depende del sistema que esté utilizando.En YAP, B, GNU, SICStus, el La directiva :- dynamic(counter/1). tiene este efecto.Es decir, solo el los datos del archivo están presentes después de la recarga.

En SWI, los predicados dinámicos se conservan como usted describe.Debe eliminarlos directamente con retractall/1 que retiene la información de que el predicado es dinámico.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top