Tag: SWI-PROLOG
Me pregunto si es posible definir un predicado dinámico con el mismo nombre y aridad que un predicado incorporado dentro de un módulo. Esperaba que sea suficiente ocultar los predicados incorporados en mi módulo usando delete_import_module/2. Lamentablemente, eso no parece funcionar. Por ejemplo, no puedo crear una cláusula para halt/1 . . . Read more
Estoy escribiendo pruebas utilizando la herramienta PlUnit de SWI-Prolog y me gustaría proporcionar un mensaje de error más claro, tal vez comparando lo que obtuve con lo que esperaba. El siguiente ejemplo mínimo funcional (MWE, por sus siglas en inglés) ejemplifica lo que busco: :- module(mwe, [parse_int/2]). parse_int(Str, Num) :- . . . Read more
Estoy aprendiendo Prolog al hacer los desafíos de Advent of Code. Advertencia de spoilers para el día 7 de Advent of Code 2021: El objetivo es: dada una lista de números naturales “n_1,…, n_k”, encontrar: min_(x\in \N) \sum_i=0^k |x – n_i| En el código a continuación, “norm1” calcula el sumando, . . . Read more
Estoy intentando “traducir” un archivo que contiene gramáticas difusas en lenguaje Prolog. En particular, estoy tratando de transformar todas las gramáticas difusas en cláusulas definidas normales usando expand_term/2. Sin embargo, me gustaría evitar traducir manualmente todas las gramáticas difusas, por lo que intentaría traducir todas las cláusulas del archivo de . . . Read more
Solo como ejemplo, tengo el siguiente programa SWI-Prolog (invierte una lista): inverte(L,LI) :- inverte(L,[],LI). inverte([], Aux, Aux). inverte([P | R], Aux, LI) :- inverte(R, [P | Aux], LI). ¿Existen herramientas para Ubuntu 20.04 para ver el árbol SLD? Como la siguiente, que resuelve la consulta: inverte([a,b,c], X).