Tengo un tipo de datos estándar que representa fórmulas de lógica de predicados. Una función que representa una regla de eliminación de la deducción natural para la separación podría ser:La función devuelve "Sin solución" en lugar de "Nada"
d_el p q =
if p =: (Dis r s) && q =: (Neg r) then Just s else
if q =: (Dis r s) && p =: (Neg r) then Just s else
Nothing where r,s free
x =: y = (x =:= y) == success
En lugar de evaluar a nada cuando la unificación falla, la función devuelve ninguna solución en PACKS
:
logic> d_el (Dis Bot Top) (Not Bot)
Result: Just Top
More Solutions? [Y(es)/n(o)/a(ll)] n
logic> d_el (Dis Bot Top) (Not Top)
No more solutions.
¿Qué me falta, y ¿por qué el
no evalúa a Nothing
cuando falla la unificación?
El lenguaje que estoy usando es el curry, un langauge programación funcional-lógica (véase etiquetas). – danportin
oh - Lo siento ... la ignorancia puede ser bastante vergonzosa ... – Carsten
Como probablemente sabrá, "curry" es también un término que tiene un significado en otros idiomas (como Haskell, obviamente), así que tal vez debería [ agregue algo de contenido a la página wiki de Stack Overflow para la etiqueta 'curry'] (http://stackoverflow.com/edit-tag-wiki/45806). – MatrixFrog