prolog

Explicitar el "éxito determinista" de los objetivos de Prolog

La cuestión del éxito determinista de algún objetivo Prolog ha surgido una y otra vez en-al menos-las siguientes preguntas: ... gún punto de elección detrás. ¿Algún meta predicado, tal vez? ¿Podría indicarme en la dirección correcta? Gracias ¡avancen!

Implementar el predicado miembro como un solo trazador

Pregunta de entrevista! Así es como normalmente se define la relación member en Prolog: member(X, [X|_]). % member( ... % or if X is a member of Tail, member(X, Tail). % ie. if member(X, Tail) is true. Defínelo usando solo una regla.

Error de existencia de Prolog siguiendo Siete Idiomas en Siete Semanas

Solo estoy siguiendo el libro Siete Idiomas en Siete Semanas. He instalado gprolog en mi máquina Mac usando el comando port ... ror(existence_error(procedure,likes/2),top_level/0). Prolog 1.3.1 no se pudo instalar en mi Mac, estoy usando prolog 1.4.0.

Definición más compacta

Dado word/1, word(W) :- abs(ABs), ABs = W. abs([]). abs([AB|ABs]) :- abs(ABs), ab(AB). ab(a). ab(b). ?- word ... e Devienne, Patrick Lebègue, Jean-Christophe Routier y Jörg Würtz. Una cláusula binaria de cuerno es suficiente STACS ' 94 .

¿"No igual" iniciar sesión en Visual Prolog?

No puedo encontrar ninguna documentación sobre "not equal" iniciar sesión en Visual Prolog. Por favor proporcione la solución ... [not-equal-sign] Sister, parent(Person, Parent), parent(Sister, Parent), woman(Sister).

Lenguajes de programación no deterministas

Sé que en Prolog puedes hacer algo como someFunction(List) :- someOtherFunction(X, List) doSomethingWith(X) % a ... i-threading en un lenguaje con variables inmutables, pero nunca he visto esto antes- ¿Por qué esta técnica no es más popular?

Prolog count el número de veces que un predicado es verdadero

Quiero contar el número de veces que un predicado personalizado es verdadero. Por ejemplo, tengo el siguiente código: is_man ... onces false. Quiero construir algo como: count(is_man(X), Count). Y esto para volver Count = 2 ¿Cómo puedo hacer eso?