¿Cuál es el estado del arte en la búsqueda encapsulada en la programación de lógica funcional?

8

Estoy particularmente interesado en soluciones al problema de que la búsqueda encapsulada puede depender del orden de evaluación.

De acuerdo con [1], la búsqueda encapsulada en PAKCS depende del orden de evaluación, mientras que en MCC no, pero su uso requiere conocimiento de la implementación del compilador y no sigue la especificación del lenguaje Curry. Esto fue escrito en 2007, por lo que, por supuesto, puede estar desactualizado ahora.

KiCS2 devuelve resultados de la búsqueda encapsulada en la mónada IO, pero no entiendo por qué.

[1] Braßel y Huch, sobre una integración más estrecha de la programación funcional y lógica , Proc. APLAS 2007

Robin Green
fuente

Respuestas:

1

Las razones para usar la mónada IO parecen estar descritas en Braßel y Huch y Hanus, 2004, pero no puedo encontrar una razón clara para usar una lista en lugar de un conjunto. Supongo que es así para que la lista se pueda elaborar perezosamente.

Parece que el enfoque descrito en el documento de 2007 no fue satisfactorio por alguna razón (no sé por qué), porque KiCS2 ha vuelto a la "API" descrita en el documento de 2004, es decir, utilizando la mónada IO. (¡Existe una versión insegura que no usa la mónada IO, pero que no es referencialmente transparente!)

Robin Green
fuente
En cuanto a list-vs-set, creo que han mencionado que a veces devuelven multisets.
Erik Kaplun
1

Ver http://www-ps.informatik.uni-kiel.de/kics2/lib/Findall.html : dice que el IOenfoque basado está en desuso y la forma preferida no es el SetFunctionsmódulo de Curry . Este nuevo diseño IOelimina los valores de retorno envueltos y tiene otros medios para evitar filtrar el indeterminismo y la no transparencia referencial en la tierra puramente FP.

Erik Kaplun
fuente
Eliminé una discusión sobre cómo citar recursos correctamente aquí. Sigamos en el chat , que es la plataforma más apropiada.
Raphael