Los cuatro horrores que todo programador Prolog debe evitar

Fuentes: Prolog Coding Horror
Los cuatro horrores que todo programador Prolog debe evitar
Imagen generada con IA

El artículo "Prolog Coding Horror" de Markus Trisha examina los principales errores que cometemos los programadores Prolog, identificando cuatro "horrores" fundamentales que debemos evitar. El primero es perder soluciones: usar constructos impuros como !/0, (->)/2 y var/1 puede hacer que nuestro programa deixe de reportar soluciones válidas, lo cual es especialmente grave porque no podemos recoveringlas de otra manera. El segundo horror es el estado global: modificar la base de datos con assertz/1 y retract/1 introduce dependencias implícitas que rompen la declaratividad. El tercer horror es la salida impura: imprimir directamente en la terminal en lugar de usar el toplevel impide razonar sobre los resultados y escribe pruebas difíciles. El cuarto horror es usar constructos de bajo nivel como (is)/2 en vez de restricciones modernas como CLP(FD). El artículo demuestra estos problemas con horror_factorial, que usa !/0 y produce solo una solución, mientras que n_factorial versión pura con restricciones genera todas las soluciones esperadas. La recomendación final es stays en el subconjunto puro y monotónico de Prolog, usando estructuras de datos clean, restricciones como dif/2 y meta-predicados como if_/3 para escribir código más general, mantenible y fácil de debuggear.